Javascript 在angularjs中使用$resource进行同步调用
我是新来的Javascript 在angularjs中使用$resource进行同步调用,javascript,angularjs,rest,angular-resource,Javascript,Angularjs,Rest,Angular Resource,我是新来的angularjs。在使用RESTfulWeb服务创建一些项目后,我遇到了一些问题。请帮助我解决这些问题。 我从中读到了$resource和$http之间的区别 我的问题是,当我使用$resource时,数据是异步的 e、 g.如果我保存任何数据并传输到详细信息页面,则我获得的数据不会更新,如果我等待一段时间,则我将获得新数据 所以我需要继续$http,或者是否有其他同步调用的方法。 我也尝试过$promise,但它并没有解决我的问题。这就是我如何使用$resource的方法 在控制器
angularjs
。在使用RESTfulWeb服务创建一些项目后,我遇到了一些问题。请帮助我解决这些问题。
我从中读到了$resource
和$http
之间的区别
我的问题是,当我使用$resource
时,数据是异步的
e、 g.如果我保存任何数据并传输到详细信息页面,则我获得的数据不会更新,如果我等待一段时间,则我将获得新数据
所以我需要继续$http
,或者是否有其他同步调用的方法。
我也尝试过
$promise
,但它并没有解决我的问题。这就是我如何使用$resource的方法
在控制器中:
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;
};
在$resource factory中:
// just a snippet from my factory
query: {
method: 'GET',
headers: { "Accept": "application/json; odata=verbose" },
url: "RequestURL"
},
正如一些评论所述,使用
promise
将使其按所需的顺序运行,正如您可以看到我在之后执行我的forEach。那么代码?使用承诺应该是一种可行的解决方法。我怀疑答案是否是执行同步请求-您可以发布有问题的代码吗?如果您不需要同步数据,您的UI将被卡住。请在API返回的承诺内执行所有操作部分,即在成功响应中