搜尋

首頁  >  問答  >  主體

angular.js - angular中怎麼根據時間來判斷重新調接口還是調localstorage的內容

我希望能做到通過時間去判斷數據是重新通過接口去取還是直接拿localstorage裡面的數據,但是接口返回的是一個promise對象,用if else判斷是會報promise.then is not a function。

phpcn_u1582phpcn_u15822862 天前612

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-05-15 17:12:16

    頁面載入後取一個時間點,點選刷新的時候再取時間。看時間差來判斷要取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"));
    }
    

    程式碼只是顯示邏輯,不能直接運作。

    回覆
    0
  • 取消回覆