我有一个循环中的承诺,我不知道如何传递一些范围变量到promise处理程序。
for(var i in superarray){ MyService.get(superarray[i].externalID).then(function(r){ console.debug(i); });
MyService是一个工作服务,具有返回promise的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 logicaly不显示1,2,3,4,5。但是5,5,5。 (在我的超阵列有5个元素)。
我如何传递’i’值在我的承诺范围,所以我可以使用它在then()?
可能吗?