Skip to content

Latest commit

 

History

History
47 lines (38 loc) · 948 Bytes

event-loop.md

File metadata and controls

47 lines (38 loc) · 948 Bytes

event-loop中的macrotask与microtask再熟悉不过了 但是今天遇到一个这样的问题

async function async1(){
  console.log(1)
  await async2()
  console.log(3)
}
async function async2(){
  console.log("async2")
}

setTimeout(()=>{
  console.log("setTimeout");
}, 0)

console.log("scritp start");
async1()

new Promise(resolve =>{
  console.log(2);
  resolve()
}).then(()=>{
  console.log("Promise")
})

console.log("scritp end")

参考如上代码输出结果

由于不清楚async await机制导致我第一次输出

// scritp start 1 async2 3 2 scritp end promise setTimeout

await后的代码 应当在上一个异步执行完成后输出

实际在node v10.1.0中 输出的答案为

// scritp start 1 async2 2 scritp end Promise 3 setTimeout

但是在chrome 72.0.3595.2 console中,输出答案为

// scritp start 1 async2 2 scritp end 3 Promise setTimeout