实现原理:说到底,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 {
/*
newStatus 新的状态
newValue 新的值
queue 执行的任务队列
*/
[changeStatus](newStatus, newValue, queue) {
if (this[PromiseState] !== PENDING) {

本文探讨Promise的实现原理,强调其通过then方法的链式调用来简化多层回调的复杂性,提供了一种更直观的异步编程方式。虽然文中只实现了一部分功能,但旨在方便未来查阅和学习,欢迎读者提出宝贵意见。
最低0.47元/天 解锁文章
448

被折叠的 条评论
为什么被折叠?



