Skip to content

依次输出什么?

javascript
const myPromise = () => Promise.resolve('I have resolved!')

function firstFunction() {
  myPromise().then(res => console.log(res))
  console.log('second')
}

async function secondFunction() {
  console.log(await myPromise())
  console.log('second')
}

firstFunction()
secondFunction()

A. I have resolved!, second, I have resolved!, second B. second, I have resolved!, second, I have resolved! C. I have resolved!, second, second, I have resolved! D. second, I have resolved!, I have resolved!, second

答案: D

解析:

该题执行顺序为:

  • 执行firstFunction()函数,进入函数执行MyPromise() ,然后将resolve()放入微队列,打印 second
  • 继续执行 secondFunction()函数,执行await后面语句,mypromise()放入微队列,后续代码也放入。

此时同步任务执行完成,执行微任务队列中的任务因此最终结果为 second, I have resolved, I have resolved, second,所以答案为 D