一道Promise面试题,并对比向其代码中添加await关键字后的变化

发布时间 2023-05-09 21:42:51作者: 樊顺

标准代码:

(function() {
    console.log(1);
    window.setTimeout(() => {
        console.log(2);
    }, 100);
    
    new Promise((resolve) => {
        console.log(3);
        resolve();
    })
        .then(() => {
            console.log(4);
        });

    console.log(5);
})();

// 输出结果:
// - 1
// - 3
// - 5
// - 4
// - 2

 

在promise对象前添入 await 后:

(async function() {
    console.log(1);
    window.setTimeout(() => {
        console.log(2);
    }, 100);

    await new Promise((resolve) => {
        console.log(3);
        resolve();
    })
        .then(() => {
            console.log(4);
        });

    console.log(5);
})();

// 输出结果:
// - 1
// - 3
// - 4
// - 5
// - 2