我正在尝试循环遍历一组AsynWork,以便完成异步工作时不会使系统负荷过重。所以我尝试使用promises一个接一个地执行。我的问题是我需要遍历一组值,以便每个异步操作都能处理数组的每个值。我已经用这段代码做到了,但它只适用于我的特定情况。怎么让它适用于其他类型的数组?我已经看到一些解决方案,使用array.reduce和promises,但是无法弄清楚它们。我也看到了一些Q的例子,但没有使用,如果可以用简单的javascript实现就更好了。
我的代码:
我的代码:
function doSomething(ObjIn1, ObjIn2) {
return new Promise(function(resolve, reject) {
console.log("doSomething: ObjIn1: " + ObjIn1 + " ObjIn2: " + ObjIn2);
setTimeout(function() {
console.log("doSomething Done: ObjIn1: " + ObjIn1 + " ObjIn2: " + ObjIn2);
resolve(ObjIn1, ObjIn2);
}, 500);
})
}
function LoopPromises(Function2Loop, functionOptions, Counter, Max) {
console.log("Counter: " + Counter);
if (Counter < Max) {
Function2Loop.apply(this, [functionOptions[0][Counter], functionOptions[1]]).then(function() {
Counter++;
LoopPromises(Function2Loop, functionOptions, Counter, Max);
});
}
}
LoopPromises(doSomething, [
["A1", "A2", "A3"], "ARG2TESTE"
], 0, 3)
} - Jose Neto
i
是每个图像相同的值 - 并且是imagesArray.length
,所以它们都是undefined
。如果你把那个var
改成let
,它就会工作(在 for 循环中)。参见 https://dev59.com/v3RB5IYBdhLWcg3wAjNH。 - Benjamin Gruenbaum