美文网首页
Promise 学习4

Promise 学习4

作者: 老米拉 | 来源:发表于2022-03-30 08:55 被阅读0次

    第四段代码

    let p = new Promise((resolve, reject) => {
      console.log("外部promise");
      resolve();
    })
    p.then(() => {
        console.log("外部第一个then");
        new Promise((resolve, reject) => {
          console.log("内部promise");
          resolve();
        })
          .then(() => {
            console.log("内部第一个then");
          })
          .then(() => {
            console.log("内部第二个then");
          });
      })
    p.then(() => {
        console.log("外部第二个then");
      });
    

    这段代码中,外部的注册采用了非链式调用的写法,根据上面的讲解,我们知道了外部代码的 p.then 是并列同步注册的。所以代码在内部的 new Promise 执行完,p.then 就都同步注册完了。

    内部的第一个 then 注册之后,就开始执行外部的第二个 then 了(外部的第二个 then 和 外部的第一个 then 都是同步注册完了)。然后再依次执行内部的第一个 then ,内部的第二个 then。

    output:

    外部promise  
    外部第一个then  
    内部promise  
    外部第二个then  
    内部第一个then  
    内部第二个then
    

    我相信,如果能看懂上面的四段代码之后,对 Promise 的执行和注册非常了解了。

    如果还是不太懂,麻烦多看几遍,相信你一定能懂~~~~~~~~
    核心思想:

    Promise 的 then 的 注册微任务队列 和 执行 是分离的。
    注册 : 是完全遵循 JS 和 Promise 的代码的执行过程。
    执行 : 先 同步,再 微任务 ,再 宏观任务。

    只有分开理解上述,才能真正理解它们的执行顺序~~~~~~~~~~~~~~~~

    相关文章

      网友评论

          本文标题:Promise 学习4

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