javascriptの同期ループと非同期ループ

JavaScriptのループは同期か非同期か?(for, while, etc)

あるとします。

for(let i=0; i<10; i++){
    // A (nested stuff...)
}

// B ...

forを使用すると、Bの実行がA` よりも先に開始されることがあります...(つまり非同期)

ステートメントを同期的に使用する方法はありますか?

ソリューション

forループは、すべての非同期処理が開始される間、直ちに完了するまで実行されます。

さて、ここではいくつかのループを入れ子にしています。注目すべきは、"BBB" が常に後に実行されることです。


for(let i=0; i
解説 (7)

非同期ループを for...loop の中に配置し、それぞれの処理が終了するまでループを停止させたい場合は、以下のように async/await シンタックスを使用しなければなりません。

async function foo() {
    var array = [/* some data that will be used async*/]

    //This loop will wait for each next() to pass the next iteration
    for (var i = 0; i < array.length; i++) { 
        await new Promise(next=> {
            someAsyncTask(array[i], function(err, data){
                /*.... code here and when you finish...*/
                next()
            })
        })        
    }
}

foo().then(() => { /*After foo execution*/ })
解説 (5)
let items = YourArray;
let i = 0;
await new Promise(async (resolve, reject) => {
    try {
        if (items.length == 0) return resolve();
        let funSync = async () => {
            await yourASyncFunctions(items[i].doAnything);
            i++;
            if (i == items.length) resolve();
            else funSync();
        }
        funSync();
    } catch (e) {
        reject(e);
    }
});
解説 (0)