在此代码中,
.then
的回调函数在console.log("still going on...")
之前执行,但通常.then
的回调函数应先发布到微堆栈,然后再进入调用堆栈。
这里发生了什么不同,为什么?
async function test(){
console.log("start");
console.log("going on...");
await new Promise((resolve, reject) => {setTimeout(() => resolve("promise value"), 5000);})
.then((result) => console.log(result))
.catch((error) => console.log(error));
console.log("still going on...");
}
test();
console.log("end.");
输出:
start
going on...
end.
promise value
still going on...
then
和 catch
创造新的承诺。console.log()
在 await