私は単純な「非同期」JS関数を持っています:
function asyncFunc(i) {
setTimeout(function () {
console.log(i);
}, 1000);
}
この asyncFunc を for ループで 5 回実行したい場合、つまり 1 秒あたり 1 ~ 5 のログを記録し、合計で 5 秒かかります。
1
2
3
4
5
jQuery の when().done() でそれができることは知っていますが、サードパーティの JS ライブラリがない環境にいる場合、 これを実現する最も簡単でエレガントな方法は何ですか?
実際には、たとえば、非同期関数の配列を受け入れる util 関数を作成したいとします。この util 関数は、渡された関数を 1 つずつ実行できます。
function execAsyncTasks([asyncTask1, asyncTask2, asyncTask3]) {
asyncTask1();
// Wait until asyncTask1 finished
asyncTask2();
// Wait until asyncTask2 finished
asyncTask3();
// Wait until asyncTask3 finished
}