问题描述: 在使用AngularJs的$q.all和for循环时,无法正确地执行异步操作。
解决方法:
var promises = [];
for (var i = 0; i < 10; i++) {
(function(index) {
var deferred = $q.defer();
// 异步操作
setTimeout(function() {
deferred.resolve(index);
}, 1000);
promises.push(deferred.promise);
})(i);
}
$q.all(promises)
.then(function(results) {
console.log(results);
});
var promises = [];
for (let i = 0; i < 10; i++) {
var deferred = $q.defer();
// 异步操作
setTimeout(function() {
deferred.resolve(i);
}, 1000);
promises.push(deferred.promise);
}
$q.all(promises)
.then(function(results) {
console.log(results);
});
这两种方法都解决了for循环中异步操作的作用域问题,确保每个异步操作都能正常执行。