js for循環中的回調同步問題

回調函數在for循環中,回調的順序就會不確定,不按順序。以下方法能使其同步執行:

一、使用 async 和 await

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
(async function loop() {
    for (let i = 0; i < 10; i++) {
        await delay(Math.random() * 1000);
        console.log(i);
    }
})();

二、使用 Promise

let p = Promise.resolve(); 
for (let i = 0; i < 10; i++) {
    p = p.then(_ => new Promise(resolve =>
        setTimeout(function () {
            console.log(i);
            resolve();
        }, 1000)
    ));
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章