2016-01-12 3 views
0

я бегу этот код для запуска запрашивайте Restngresource установить глобальную переменную в ответ успех

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; 
        } 
+0

Вы попробовали объект обещания. Пожалуйста, найдите [здесь] (https://docs.angularjs.org/api/ng/service/$q) –

ответ

0

проблема

Поскольку вы выполняете действие асинхронной, консоль будет работать быстрее, прежде чем вы могли бы изменить переменную.

вывод

Так в основном это делает переопределить глобальную переменную, но только после того, как ваше обещание решить.

проверки

С следующим образом вы можете проверить свою глобальную переменную после того как она изменилась.

var global = 0; 

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

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

'$ resource' не возвращает обещание. Вы должны использовать свойство '$ prom'. См. Мой ответ. – Zakaria

+0

Я тоже исправил это – Iamisti

1

Я не думаю, что ответ Iamisti был бы работать, так как $resource не возвращаются обещаний. See here:

Примечание: В отличие от $ http.config, обещания не поддерживаются в $ ресурса, так как то же самое значение будет использоваться для нескольких запросов.

Yous следует использовать имущество $promise. Вот что будет его (и вашим?) Решением:

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

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

Это то же самое, что и я .... – Iamisti

+0

@Iamisti да, это то, что я сказал в ответе;) ожидайте, что я использую свойство '$ prom', так как' $ resource' doesn ' t возвращают обещания. – Zakaria