【发布时间】:2018-04-03 18:04:08
【问题描述】:
我需要能够遍历图像对象并一次对每个图像执行异步功能。
如果我将图像对象转换为数组,我可以使用它,但我想使用 for...in 循环来执行此操作,这样我也可以使用图像键。我还需要能够像现在一样在最后执行操作。
var images = {
ABD: '1464685684713583388647.jpg',
ABY: '1457524543088191607099.jpg',
ADV: '1478877365443818880647.jpg',
AFD: '1457527861824290195088.jpg',
}
var imagesArray = Object.values(images);
var len = imagesArray.length;
function asynchronousImageFunction (key, image, onSuccess, onFail) {
setTimeout(function () {
console.log(key);
console.log(image);
onSuccess();
}, Math.random() * 1000)
}
(function loop(i) {
if (i < len) {
new Promise(function (resolve, reject) {
asynchronousImageFunction ('key', imagesArray[i], resolve, reject);
}).then(loop.bind(null, i+1));
} else {
console.log('end');
}
})(0);
顺序并不重要,但让他们一个接一个地调用很重要,并且还需要一个 onComplete 或 end 调用。 我就是想不通,有人能帮忙吗?
【问题讨论】:
-
您是在浏览器还是节点中执行此操作?
-
在 Cordova 应用程序中......浏览器非常重要。
标签: javascript for-loop asynchronous promise