這是我如何使用$資源
在控制器:
var promise = Service.queryItem();
promise.then(function(response){
// just adding my response items to an array
angular.forEach(response, function(item){
$scope.items.push(item);
});
}, function(reason){
console.log(reason);
});
在服務
this.queryItem = function(){
var deferred = $q.defer();
setTimeout(function() {
// deferred.notify('Saving data..');
var items = Items.query({},function() {
deferred.resolve(items.d.results);
}, function(error){
deferred.reject(error);
});
}, 1000);
return deferred.promise;
};
在$資源工廠:
// just a snippet from my factory
query: {
method: 'GET',
headers: { "Accept": "application/json; odata=verbose" },
url: "RequestURL"
},
正如一些評論指出,使用promise
將使其按照所需的順序運行,正如你所看到的那樣,我做了for each後.then
代碼?使用承諾應該是解決問題的可行方法。 – whipdancer
我懷疑答案是做一個同步請求 - 你可以發佈你的代碼有問題嗎? – tymeJV
你不需要同步數據,你的用戶界面將被卡住[已棄用](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#open())。 –