ngresource在成功响应中设置全局变量

时间:2016-01-12 08:21:43

标签: javascript angularjs ngresource

我正在运行此代码来运行REST请求

app.factory('GetValidationsService', function($resource) {
    return $resource('/Validations');
})

然后调用它:

var global = 0;

GetValidationsService.get(
             function(data){
                        global = 3;
                 },
             function(err){
                  });

console.log(global);

结果为0 我希望它是3。 我怎样才能将值设置为全局?

 function(data){
                            global = 3;
                     }

2 个答案:

答案 0 :(得分:1)

我不认为Iamisti的回答会有效,因为$resource不会回复承诺。 See here

  

注意:与$ http.config相反,不支持promises   $ resource,因为相同的值将用于多个请求。

Yous应该使用$promise属性。 以下是他(和你的?)解决方案:

var global = 0;
var promise = GetValidationsService.get(function(data){
   global = 3;
}).$promise;

promise.then(function() {
     console.log(global);
});

答案 1 :(得分:0)

问题

由于您执行了异步操作,因此您的控制台将在您更改变量之前运行。

结论

所以基本上它会覆盖你的全局变量,但只是在你的诺言解决之后。

验证

通过以下方式,您可以在更改后检查全局变量。

var global = 0;

var promise = GetValidationsService
                  .get(function(data){
                      global = 3;
                  }).$promise;

promise.then(function(){
    console.log(global);
});