0
我需要对Angular资源进行多个并发调用,并使用$ promise 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”?
有没有更简单的方法来解决这个问题?