Ich unten habe zwei Funktionen. Eine der Antworten gibt ein Versprechen ab und ich möchte in jeder Schleife darauf warten, dass sie zuerst beendet wird und dann eine verschiebt. Wie Sie unten sehen werden, ist das Ergebnis nicht das gewünschte/synchrone Ergebnis. Soll ich async.forEachof
nichtWarten Sie, bis jedes Versprechen nach dem Fortsetzen der Schleife
function test(num, callback)
{
console.log("inside function: "+num)
return new Promise((resolve, reject) => {
my.promise(num).then(() => {
console.log("done: "+num)
resolve(callback);
}).catch(e => console.error(e));
}).catch(console.error);
}
function start_function()
{
//stuff
async.forEachOf(arr, function (itm, i, callback){
console.log(i)
test(i, callback).catch(e => console.error(e));
}, function (err) {
console.log("ALL DONE")
});
}
Ergebnis verwenden:
0
inside function 0
1
inside function 1
2
inside function 2
done: 0
done: 2 //wrong should always be 1, finished before the previous promise.
done: 1 //wrong
ALL DONE
Ich will nicht PromiseAll nicht verwenden, weil ich nicht will, sondern weil ich brauche jedes Versprechen für die vorherige Ergebnis zu warten, und dann starten der Nächste. Es ist daher sinnlos, sie alle zu sammeln und dann darauf zu warten, dass sie in welcher Reihenfolge und zu dem, was ich tun muss, getan werden.
Ich kann nicht erwarten, wo es läuft. Es ist nicht im neuesten Stall, es sei denn, ich liege falsch. –
Welche Version von Node verwenden Sie?, Es sollte da sein nach Node.js 7.6.x –
Nur schüchtern von 8. Ich weiß LTS ist 8.9. –