使用angularjs中的$ resource进行同步调用

时间:2015-12-01 14:12:52

标签: javascript angularjs rest angular-resource

我是angularjs的新手。在创建了一些带有宁静网络服务的项目后,我陷入了困境。所以请帮助我解决这些问题。 我已经从AngularJs $resource vs $http

中了解了$resource$http之间的区别

我的问题是,当我使用$resource时,数据是异步的 例如如果我保存任何数据并转移到详细信息页面,我得到的数据不会更新,如果我等待一段时间,我将获得新数据。

所以我需要继续$http或是否还有其他方式可以同步拨打电话。 我也试过$promise,但它并没有解决我的问题。

1 个答案:

答案 0 :(得分:4)

这就是我使用$ 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的使用将使其按所需顺序运行,因为您可以看到我在.then

后执行forEach