new Promise((resolve) => {
setTimeout(() => {
console.log(1);
resolve();
}, 0)
});
console.log(2);
setTimeout(() => {
console.log(3)
}, 0);
await new Promise((resolve) => {
setTimeout(() => {
console.log(4);
resolve();
}, 0)
}).then(() => {
console.log(5);
})
console.log(6);
Promise
和setTimeout
都是异步,会入栈的await new Promise
也是会入栈,但await
是等待标记,一定要等Promise
有返回值才执行后面的代码then
是回调方法,一定等前面的方法执行完了才执行then
里面的代码- 因为
setTimeout
的执行时间都是0
,三个异步setTimeout
会按等待时间顺序执行 - 打印结果如下