[英]Angular promise multiple times
我正在嘗試復制像couchDB這樣的系統。 我的后端是Parse服務器,我的前端是Ionic(1)
我想要實現的是用localstorage來固定我的應用程序。
目前:GetUserAds
- >有localstorage嗎?
- >是的
--->返回localstorage
- >不
--->獲取數據庫調用
---->返回並放置本地
但我真正想要的是本地返回在后台獲取數據庫並返回該數據,如果它已更改
這是因為我的應用程序有很多用戶並且變化很大。
我可以這樣做嗎?
getUserAds(user).then(function(data) {
//Local data
}).then(function(dataDB) {
//Database updated data
})
您可以使用角度承諾提供的notify
回調:
function UserService($timeout, $q) {
var users = ["user1", "user2"]; //localStorage.getItem('users');
function get() {
var deferred = $q.defer();
//call your backend here $http.get('....')
$timeout(function() {
//if(remoteUsers !== users) {
deferred.resolve({local: false, users: users.concat('user3')});
//}
}, 3000);
$timeout(function() {
if(users) {
deferred.notify({local: true, users: users});
}
}, 100)
return deferred.promise;
}
return {
get: get
};
}
並在你的控制器
function MyCtrl($scope, $users) {
$scope.name = 'Superhero';
$scope.myUsers = [];
$users.get()
.then(setUsers, null, setUsers);
function setUsers(users) {
$scope.myUsers = users;
}
}
在這里你可以看到一個小小的jsfiddle: http : //jsfiddle.net/Lvc0u55v/1596/
如果您使用Angular API中的此服務,您可以這樣做: Angular Promises 。
我就是這樣做的:
getUserAds(user).then(function(response) {
// useMyData
});
function getUserAds {
if( thereIsLocalData ) {
return getLocalData(); // this returns a $q promise
} else {
return getDataDB() // Here I'm returning an $http Promise
}
}
function getDataDB (params) {
return $http.get(host, params, {}); // I'm returning the $http Promise!
}
function getLocalData (params) {
return $q(function(resolve, reject) {
resolve(myLocalData);
}); // return the $q promise!
}
這樣,您可以像在線通信一樣使用本地通信,並且可以簡化邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.