实现原理:说到底,Promise 也还是使用回调函数,只不过是把回调封装在了内部,使用上一直通过 then 方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些。
我这里只是实现了部分的功能,并非和源码一模一样!希望里面不足的地方,小伙伴们多多指正
//我们首先来定义一个MyPromise类,我在这里使用立即执行函数的方式,防止变量全局污染。
const MyPromise = (() => {
// 定义三种状态
const PENDING = "pending";
const RESOLVED = "resolved";
const REJECTED = "rejected";
//这里使用Symbol定义不让外界访问的符号属性,状态和数据
const PromiseResult = Symbol("PromiseResult")
const PromiseState = Symbol("PromiseState")
const changeStatus = Symbol("changeStatus")
// 定义两个任务队列:成功的后续处理和失败后续处理
const thenables = Symbol("thenables")
const catchables = Symbol("catchables")
const settleHandle = Symbol("settleHandle")
return class MyPromise {