Skip to content

import { CodeSandbox } from '@/components/CodeSandbox'

复习面试题 - 打印题 - Promise 执行顺序

题目 1:async/await

解释:await fn,这个fn仍然是同步,但是 await fn后面的成了微任务,所以会先打印 async1 end

题目 2:resolve

解释:resolve 不会阻止当前的同步执行,所以先打印3,4,执行完了同步再执行resolve,两个setTimeout,一个0,一个10,所以先打印6,2

题目 3:Promise链式调用

题目 4:then

解释:多个 then 都会执行

题目 5:Promise.all

解释:promise.all 会等待所有 promise 都执行完,然后执行 then

题目 6:事件循环

解释:清空完微任务再执行宏任务

总结

  • await 会暂停 async 函数执行,await 之后的代码会作为微任务加入队列
  • resolve 不会影响同步执行
  • then 都会执行,默认是 return undefined
  • 事件循环,先清空微任务,再执行宏任务