美文网首页
promise 的then方法

promise 的then方法

作者: HelenYin | 来源:发表于2021-09-27 17:38 被阅读0次

关于then
首先then会返回一个Promise

then(successCallback, failedCallback) {
  return new Promise((resolve, reject) => {
    // success是 resolve的值
    // 可以看出是从这里将resolve的值传给成功回调的
    const x = successCallback(this.success);
    // 调用successCallback有可能是一个Promise,也可能不是
    if (x instanceof Promise) {
      // 如果x是一个promise,重新走一次then的逻辑,通过
      // successCallback(this.success);  将x的的值给resolve
      // 那么当前then方法返回的promise,再次调用then
      // 就会拿到上一个then 方法return 的prmise 的resolve的值
      x.then((res) => {  resolve(res) })
    } else {
      // resolve做两件事:
      // 1. 将Promise的状态改为fulfilled。
      // 2. 将resolve的参数给success,
      // 下一次调用then方法的时候就会通过successCallback(this.success)传给then的成功回调
      resolve(x)
    }
  })
}

相关文章

  • 一步步手写Promsie源码(二)

    Promise.all方法实现 Promise.resolve方法实现 Promise.finally方法实现 c...

  • Promise.finally、Promise.all、Prom

    Promise原型对象上的方法 Promise构造函数中定义的方法 1. Promise.prototype.fi...

  • Promise,async,await笔记

    Promise,async,await笔记 Promise 创建promise对象 Promise对象构造方法传入...

  • 详解ES6 Promise

    整理Promise提供的各种方法和错误处理方法。 1.Promise.resolve() 1.1 Promise....

  • Promise对象

    Promise对象 创造一个Promise实例 then方法 Promise实例生成以后,可以用then方法分别指...

  • 为原型添加方法

    手动添加数组方法 为promise添加实现方法 promise.finally promise.all promi...

  • 【promise-05】promise.all()与promis

    #promise.all()与promise.race() Promise.all()方法可以把多个promise...

  • promise浅析

    创建promise Promise.prototype.then方法的使用Promise实例生成后,可用then方...

  • js sleep

    // promise 在ES6的语法中,Promise是sleep方法异步的实现一种方式,借助Promise方法可...

  • ES6 Promise

    ES6 promise 的一些常用方法 Promise.prototype.then() Promise.prot...

网友评论

      本文标题:promise 的then方法

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