以下に2つの機能があります。戻り値の1つは約束であり、私はそれぞれのループで最初に終了してからそれを待つことを望みます。下に示すように、結果は望ましい/同期ではありません。私は使うべきではありませんasync.forEachof
ループを継続した後、それぞれの約束を待つ
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")
});
}
結果:私はいけないが、私は必要があるため、それぞれが前の1の結果を待ち、その後、開始することを約束していないので、PromiseAllを使用したくない
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
次のもの。それゆえ、それらをすべて集めて、どんな順序で、そして私がする必要があるかでそれらが完了するのを待つことは無意味です。
まで
loopOnItems
メソッドを呼び出す私はそれを実行している場所を待つ使用を傾ける。それは間違っていない限り、最新の安定したものではありません。 –
あなたはどのノードのバージョンを使用していますか?それはnode.js 7.6.x –
の後にあるはずです.8の恥ずかしがり屋です.LTSは8.9です。 –