美文网首页
Promise链式调用的原理

Promise链式调用的原理

作者: 种草林 | 来源:发表于2022-12-23 22:44 被阅读0次

Promise链式调用, 不仅中工作中经常用到, 面试中也有时会被问到, 如果搞懂它, 对我们工作面试都会有帮助.

其实它的原理很简单, 就是因为then方法也会返回一个新的Promise, 然后这个Promise会根据它接收的参数,来决定状态, 如果接收到的不是一个Promise, 那么它就自动置为fullfill, 如果接收到的参数是Promise, 那么就将它的resolve函数放在接收到的Promise中的then方法执行, 所以就保证了只有接收到的参数的那个Promise执行完, 返回的的Promise才会执行,也就形成链式调用的过程, 具体代码如下:

  then(onFulfilled?, onRejected?) {
    const { _value, _status } = this;
    // 返回一个新的Promise对象
    return new Promise((onFulfilledNext, onRejectedNext) => {
      // 封装一个成功时执行的函数
      const fulfilled = value => {
        try {
          if (!isFunction(onFulfilled)) {
            onFulfilledNext(value);
          } else {
            const res = onFulfilled(value);
            if (res instanceof Promise) {
              // 如果当前回调函数返回Promise对象,必须等待其状态改变后在执行下一个回调
              res.then(onFulfilledNext, onRejectedNext);
            } else {
              //否则会将返回结果直接作为参数,传入下一个then的回调函数,并立即执行下一个then的回调函数
              onFulfilledNext(res);
            }
          }
        } catch (err) {
          // 如果函数执行出错,新的Promise对象的状态为失败
          onRejectedNext(err);
        }
      };

相关文章

  • Promise链式调用的原理

    Promise链式调用, 不仅中工作中经常用到, 面试中也有时会被问到, 如果搞懂它, 对我们工作面试都会有帮助....

  • js promise图解

    链式调用 封闭promise

  • Promise的简单实现

    随着ES6的出现,Promise成为标准,平时使用的次数也增加。但是Promise的原理是什么,如何实现链式调用。...

  • 嵌套的promise执行顺序

    外部promise有多个then链式调用,第一个then里面执行另一个promise,也带多个then链式调用,他...

  • Promise

    什么是Promise Promise解决了什么问题 Promise/A+规范 Promise的原理(如何实现链式调...

  • promise原理之实现链式调用

    1.埋下伏笔,then中的onfulfilled,onreject回调是异步执行的 以上例子说名:then中的回调...

  • ES6

    AJAX 异步网络请求 Promise 使用了Promise对象之后可以链式调用的方式组织代码 Promise.a...

  • Promise链式调用

    做了一个博客项目,有一个过程如下: 封装request函数(用axios发送请求),axios会返回一个promi...

  • Promise链式调用

    一、Promise对象 承诺一定会实现,更简单的处理异步请求。同时更加方便使用链式调用。缺点:Promise对象状...

  • Promise 链式调用

    Promise status状态,有三种状态pendding、resolved、rejected,状态由 pend...

网友评论

      本文标题:Promise链式调用的原理

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