我在循环中有一个承诺,但我不知道如何将一些范围变量传递给承诺处理程序。
for(var i in superarray){
MyService.get(superarray[i].externalID).then(function(r){
console.debug(i);
});
MyService 是一个工作服务,带有一个返回承诺的 get 方法。
app.factory('MyService', function($http,$q) {
return {
get : function(itemID){
var deferred = $q.defer();
$http.get('/someresturl/'+itemID).then(function(e) {
deferred.resolve(e.data);
}, function(reason) {
deferred.reject(reason);
});
return deferred.promise;
}
});
在我的控制台中,console.debug 逻辑上不显示 1、2、3、4、5。但是5,5,5,5,5。(我的超级数组中有 5 个元素)。
如何在我的承诺范围内传递 'i' 值,以便在 then() 中使用它?
可能吗?