美文网首页
promise实现原理

promise实现原理

作者: 灵魂旅者s | 来源:发表于2022-06-22 20:47 被阅读0次

promise主要的API方法如下

Promise.all()  // 全部执行完后更新状态 如果都是成功则由返回值组成一个数组返回,如果有失败的则返回第一个失败

Promise.race()  // 赛跑方式那个先更新状态 则返回更新状态不用等全部都执行完

Promise.resolve()  //  将Promise对象的状态从 Pending(进行中) 变为 Fulfilled(已成功)

Promise.reject()  // 将Promise对象的状态从 Pending(进行中) 变为 Rejected(已失败)

Promise.prototype.catch()  //相当于调用 then 方法, 但只传入 Rejected 状态的回调函数

Promise.prototype.finally()  // 用于指定不管 Promise 对象最后状态如何,都会执行的操作

Promise.prototype.then() // 接受两个参数:onFulfilled 和 onRejected 都是可选参数

简单实现 all 静态方法实现

class MyPromise {

    // 构造方法接收一个回调

    constructor(executor) {

      this._resolveQueue = []    // then收集的执行成功的回调队列

      this._rejectQueue = []     // then收集的执行失败的回调队列

// 由于resolve/reject是在executor内部被调用, 因此需要使用箭头函数固定this指向, 否则找不到

this._resolveQueue

      let _resolve = (val) => {

        // 从成功队列里取出回调依次执行

        while(this._resolveQueue.length) {

          const callback = this._resolveQueue.shift()

          callback(val)

        }

      }

      // 实现同resolve

      let _reject = (val) => {

        while(this._rejectQueue.length) {

          const callback = this._rejectQueue.shift()

          callback(val)

        }

      }

      // new Promise()时立即执行executor,并传入resolve和reject

      executor(_resolve, _reject)

    }

 // then方法,接收一个成功的回调和一个失败的回调,并push进对应队列

    then(resolveFn, rejectFn) {

      this._resolveQueue.push(resolveFn)

      this._rejectQueue.push(rejectFn)

    }

  }

相关文章

  • javascript的promise

    实现原理 Promise.all() Promise.race()

  • 转载Promise实现原理,自己记忆备用

    Promise实现原理(原文)

  • Promise

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

  • promise原理

    title: Promise实现原理date: 2018-02-26 17:25:09tags: promise ...

  • 手写Promise

    参考:Promise实现原理(附源码) promise的注意点: Promise特点 1.状态不可变 2.值穿透,...

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

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

  • 实现 Promise

    实现 Promise 此代码基本源于大佬在掘金上发的文章Promise实现原理(附源码), 此文写得相当详细, 非...

  • 宏观看Promise

    自定义Promise实现,来了解他的运行原理

  • promise实现原理

    伪代码 class my_promise { constructor(fun) { const that =...

  • Promise实现原理

    当我们用$.ajax()这个API的时候,是想使用Ajax去请求数据。并且在回调函数success里面去操作我们得...

网友评论

      本文标题:promise实现原理

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