angular.js - angular中怎么根据时间来判断重新调接口还是调localstorage的内容

查看:83
本文介绍了angular.js - angular中怎么根据时间来判断重新调接口还是调localstorage的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我希望能做到通过时间去判断数据是重新通过接口去取还是直接拿localstorage里面的数据,但是接口返回的是一个promise对象,用if else判断是会报promise.then is not a function。

解决方案

页面加载后取一个时间点,点击刷新的时候再取时间。看时间差来判断要取local还是接口,两者的逻辑不同,所以要用不同的方式进行调用。最后赋值给页面存储数据的变量,这样就不会出现你说的错误了。
补充:
比如你页面数据是用$scope.data存储的。
加载页面的时候去时间点,存在start变量中。
当点击刷新时,取结束时间存end,直接取时间差也可以。如果时间差大于等于一分钟,从接口取数据。否则从localStorage取数据。
接口取数据回来的是promise,而localStorage回来的是字符串。

if(end-start>= 1){ //从接口取数据,加入接口名字为DataService
    DataService().then(function(response){
        console.log(response); //这里默认接口回来的数据和你页面数据是一样的,有可能页面数据是接口数据的一部分,需要用点进行调用,例如 response.data
        $scope.data = response;
    })
}else{
    //从localStorage取数据,这里假定你存入的数据名为data
    //取回来的是字符串,需要转成json。注意,存入的时候也要是字符串,需要用JSON.stringify()转换
    $scope.data = JSON.parse(localStorage.getItem("data"));
}

代码只是显示逻辑,不能直接运行。

这篇关于angular.js - angular中怎么根据时间来判断重新调接口还是调localstorage的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆