美文网首页
Promise执行输入问题详解

Promise执行输入问题详解

作者: 月_关 | 来源:发表于2021-07-30 17:30 被阅读0次
Promise.resolve().then(() => {
    console.log(0)
    return Promise.resolve(4)
  }).then(res => {
    console.log(res)
  })

  Promise.resolve().then(() => {
    console.log(1)
  }).then(() => {
    console.log(2)
  }).then(() => {
    console.log(3)
  }).then(() => {
    console.log(5)
  }).then(() => {
    console.log(6)
  }).then(() => {
    console.log(7)
  }).then(() => {
    console.log(8)
  })

  // 0 1 2 3 4 5 6 7 8
  // 宏任务
  // 执行第一个宏任务promise.resolve,then里面的, () => {
  //   console.log(0)
  //   return Promise.resolve(4)
  // } 进入微任务队列
  // 执行第二个宏任务promise.resolve,then里面的, () => {
  //   console.log(1)
  // } 进入微任务队列, 这时候宏任务执行完了,微任务队列有俩个任务

  // 微任务
  // () => {
  //   console.log(0)
  //   return Promise.resolve(4)
  // } 执行,输出0, 注册一个job, 当执行栈为空的时候(也可以理解为本轮微任务队列为空),job进入执行队列

  // () => {
  //   console.log(1)
  // } 执行,输出1,下一个then回调推入微任务队列, 这个时候本轮执行微任务队列空了,job进入队列

  // 所以执行栈里面现在是
  // () => {
  //   console.log(2)
  // } 执行,输入2,下一个then回调推入微任务队列

  // job 执行,res => {
  //   console.log(res)
  // }推入微任务队列

  // 所以执行栈里面现在是
  // () => {
  //   console.log(3)
  // } 执行,输入3,下一个then回调推入微任务队列

  // res => {
  //   console.log(res)
  // } 执行, 输入4

  // 之后就是then的;链式调用5 6 7 8

相关文章

网友评论

      本文标题:Promise执行输入问题详解

      本文链接:https://www.haomeiwen.com/subject/ovdcvltx.html