angularjs – 在一个循环中传递变量以承诺
发布时间:2020-12-17 08:31:59 所属栏目:安全 来源:网络整理
导读:我有一个循环中的承诺,我不知道如何传递一些范围变量到promise处理程序。 for(var i in superarray){ MyService.get(superarray[i].externalID).then(function(r){ console.debug(i);}); MyService是一个工作服务,具有返回promise的get方法。 app.factory(
我有一个循环中的承诺,我不知道如何传递一些范围变量到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()? 可能吗?
一种方法是在闭包中捕获i:
for(var i in superarray) { (function(i) { MyService.get(superarray[i].externalID).then(function(r) { console.debug(i); }); })(i); } 另一种方法是安排itemID作为r的属性重复: for(var i in superarray){ MyService.get(superarray[i].externalID).then(function(r) { console.debug(r.itemID); }); }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |