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」?
有沒有更簡單的方法來解決這個問題?