请问使用angularjs如何在for循环里面循环多次回调?
var app = angular.module('app', []);
app.controller('appctrl', ['$http', '$q', function($http, $q) {
function aaa(id) {
var deferferred = $q.defer();
$http({
method: 'get',
url: 's' + id + '.html'
}).then(function(res) {
deferred.resolve(1);
})
return deferred.promise;
}
var b = [0,1, 2, 3, 4, 5, 6, 7, 8, 9];
var c = [];
for (var i = 0; i < b.length; i++) {
var promise = aaa(b[i]);
promise.then(function(res) {
c.push(res);
})
}
console.log(c)
}])
请问,如何让for循环中的promise全部完成后,取到所有的res,保存在c里?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
是这样吗?
其中 0.php 代码是
其中 1.php 代码是
其中 2.php 代码是
返回的结果是
jquery中有个when方法,接受的参数就是Deferred对象。
伪代码:
当然你这里只需要在c每次push值之后判断c的length就行了,如果c的length等于b的length。那么就可以认为所有promise已完成
推荐你用$q.all
简单用法
文档:
https://docs.angularjs.org/api/ng/service/$q
用q.all方法可以解脱你的痛苦