教你如何手写一个Promise

本文介绍了如何从零开始编写一个Promise,涵盖了从理解Promise的工作原理到实现then、catch方法,以及all和race的简单介绍。通过实例代码解析了Promise状态转换、微任务处理以及链式调用的实现细节。
摘要由CSDN通过智能技术生成

想要源码的可以看这里,里面也有一些其他的知识

想要手写一个promise,首先就要了解promise,想必大家都被过一些promise的面试题,知道一些promise的用法,主要考的就是一种异步编程的思想。

了解promise

我们先来看看直接输出一个promise对象会是什么,通过代码:

var p = new Promise((resolve,reject)=>{});
console.log(p);

可以看到输出结果Promise大致由它的状态PromiseState,它的值PromiseResult和它原型上面的方法组成。

promise对象有一个函数当作参数,函数里又分别有两个参数,分别是resolve和reject,当调用resolve()时就会运行prototype上的then()方法,当调用reject()时就会运行prototype上的catch()方法,这里的then,catch都是微任务,所谓微任务就是之宏任务运行完之后所运行的任务。就好比去银行办业务,你的要办的业务相当于宏任务,等你办完后银行工作人员会推荐与你业务相关的拓展业务,这个拓展业务就相当于微任务。

promise的状态有三种:等待(pending)、已完成(fulfilled)、已拒绝(rejected),并且状态只能由等待到完成或者等待到拒接。

开始写

了解promise之后我们就能把基本的架构写出来了。

function MyPromise(fn) {
        // promise 的状态
        this.PromiseStat
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值