美文网首页
Promise 学习3

Promise 学习3

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

再看第三段代码

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

这段代码的差异,就是内部的 Promise 的代码的写法变了,不再是链式调用。

这里怎么理解呢?

这里在执行内部的 new Promise 的 resolve 执行完成之后(扭转了该 Promise 的状态),new Promise 之后的两个同步 p.then 是两个执行代码语句,都是同步执行,自然是会同步注册完。

两种方式的最主要的区别是:

  • 链式调用的注册是前后依赖的 比如上面的外部的第二个 then 的注册,是需要外部的第一个的 then 的执行完成。
  • 变量定义的方式,注册都是同步的 比如这里的 p.then 和 var p = new Promise 都是同步执行的。

所以这里的代码执行就比较清晰了,内部都执行完成之后(因为都优先于外部的第二个 then 的注册),再执行外部的第二个 then :

output:

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

相关文章

  • Promise 学习3

    再看第三段代码 这段代码的差异,就是内部的 Promise 的代码的写法变了,不再是链式调用。 这里怎么理解呢? ...

  • Promise.all 和 Promise.race

    1. Promise.resolve() 2. Promise.reject() 3. Promise.all()...

  • Promise笔记

    基本API 1. Promise.resolve() 2. Promise.reject() 3. Promise...

  • ES6异步:Promise

    #Promise迷你书通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

  • 实现一个简单的Promise

    (1)Promise 基本使用 (2)Promise A+规范 一个 promise 必须有3个状态,pendin...

  • JS基础:异步编程之Promise、async-await

    目录一. Promise 1. 为什么要使用Promise 2. Promise是什么 3. 如何使用Promis...

  • Node 学习(二)

    Promise学习 Promise含义 容器,保存异步操作的结果对象,获取异步操作的消息 Promise对象特点 ...

  • Promise笔记

    Promise学习(上): 资料: JavaScript Promise迷你书 原著:azu / 翻译:liubi...

  • Promise

    前言 回过头来整理下Promise Promise Promise的一些基本点3个state:pendingful...

  • 八(1)、Promise(周) ------ 2020-02-2

    1、什么是Promise: 2、通过原生JS实现简单的Promise原理,理解Promise如何管控异步编程: 3...

网友评论

      本文标题:Promise 学习3

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