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

ngresource set global variable in success response

本文关键字:设置 全局变量 响应 成功 ngresource      更新时间:2023-09-26

我正在运行此代码以运行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;
                     }

我认为Iamisti的答案不起作用,因为$resource不返回承诺。请参阅此处:

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

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

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

问题

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

结论

所以基本上,它确实覆盖了你的全局变量,但就在你的承诺得到解决之后。

验证

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

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