Мне нужно сделать несколько одновременных вызовов для ресурса с угловым значением и связать некоторые действия с $ apa api.
Я определяю ресурс как этот
myServicesModule.factory('MyResource', ['$resource', 'SETTINGS', function($resource, SETTINGS) {
return $resource(SETTINGS.serverUrl + '/myResource/:id', { },
{
get: { method: "get", url: SETTINGS.serverUrl + '/myResource/show/:id' },
}
);
}]);
Мой контроллер должен получить несколько записей, и принимать меры по каждой из них, когда запись будет готова. У меня возникли проблемы с передачей значений закрытию then().
Когда я делаю это:
for (var i = 0; i < 3; i++) {
MyResource.get({id: i}).$promise.then(function(item) { console.log(i); });
}
Выход "2, 2, 2".
Этот код выводит желаемый результат «0, 1, 2» (порядок варьируется в зависимости от того, когда завершается каждый вызов ресурса), но это уродливое решение.
for (var i = 0; i < 3; i++) {
var closure = function(i) {
return function(item) { console.log(i); console.log(item); }
}
UwgCarrier.get({id: i}).$promise.then(closure(i));
}
Почему первый фрагмент кода возвращает «2, 2, 2»?
Есть ли более чистый способ решить эту проблему?