【JavaScript】如何手写一个Promise

本文通过编写myPromise,详细解释了Promise的工作原理,包括同步和异步执行的存取、状态管理、任务队列优化以及实现then的链式调用。通过实例解析,帮助读者深入理解Promise的内部机制。
摘要由CSDN通过智能技术生成

前言

本文主要内容:通过编写一个 myPromise 对象来进一步了解 Promise 的运行机制

手写 Promise 应该就是理解 Promise 逻辑的最好办法,所以虽然掘金上已经有无数手写 Promise 的文章,我还是打算通过类似做笔记的办法手写一遍 Promise 来加深一下理解

定义 myPromise

先来看看原生的Promise是如何定义的

const promise = new Promise((resolve, reject) =>{

}; 

所以我们要定义一个myPromise,首先是定义一个类,如下代码定义后进行了创建

class myPromise {

}

const mp = new myPromise((resolve, reject) => {}) 

可以看到创建时填写了一个函数,而这个函数实际上是会被传入myPromise类的构造函数中作为参数的,如下

class myPromise {constructor(executor) {executor();}
}

const mp = new myPromise((resolve, reject) => {console.log("test");
}) 

也就是constructor接收了console.log("test")这个函数参数,然后进一步通过executor()调用了

而我们传入的这个函数是有 resolvereject 两个参数的,而这就需要在 myPromise 类中定义后传入,代码如下

class myPromise {constructor(executor) {executor(this.resolve,this.reject);}resolve() {}reject() {}
} 

所以这样我们就将myPromise中的两个方法传给了构造函数中函数的两个参数

这里还有一个问题就是我们希望resolve作为私有方法被调用,所以加上#

因此,定义myPromise类的最终结果如下

class myPromise {constructor(executor) {executor(this.#resolve,this.#reject);}#resolve(value) {}#rej
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值