Promise源码分析

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现原理:说到底,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 {
       
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值