loop sinkron dan asinkron dalam javascript

Apakah perulangan sinkron atau asinkron dalam JavaScript? (for, while, dll)

Seandainya iya:

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

// B ...

Menggunakan for, eksekusi B akan dimulai sebelum A terkadang... (jadi tidak sinkron)

Apakah ada cara untuk menggunakan pernyataan secara sinkron?

Larutan

Perulangan for berjalan segera hingga selesai saat semua operasi asinkron Anda dimulai.

Nah, di sini kita memiliki beberapa perulangan bersarang. Perhatikan, "BBB" selalu dieksekusi setelahnya.


for(let i=0; i
Komentar (7)

Jika Anda menempatkan perulangan asinkron di dalam for...loop dan ingin menghentikan perulangan hingga setiap operasi berakhir, Anda harus menggunakan sintaks async/wait seperti ini.

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*/ })
Komentar (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);
    }
});
Komentar (0)