简单的promise源码

 1 class Promise {
 2   constructor (executor) {
 3     // 控制异步执行的状态
 4     this.pending = "pending"
 5     // 用来保存异步执行的结果
 6     this.data = undefined
 7     // 使用箭头函数 让this指向 当前实例对象
 8     const resolve = val => {
 9       if (this.pending === 'pending'){
10         this.pending = "fulfilled"  //修改状态
11         this.data = val   //保存异步执行的结果
12         console.log(val)
13       }
14     }
15     const reject = val => {
16       if (this.pending === 'pending') {
17         this.pending = "rejected" //修改状态
18         this.data = val //保存异步执行的结果
19         console.log(val)
20       }
21     }
22 
23     executor(resolve, reject) //exector是一个执行器,传入resolve和reject方法,进入会立即执行
24  } 
25 }
26
27 module.exports = Promise

一、Promise核心逻辑实现

首先分析其原理

  1. promise就是一个类 在执行类的时候需要传递一个执行器进去,执行器会立即执行

  2. Promise中有三种状态,分别为成功-fulfilled 失败-rejected 等待-pending pending -> fulfilled pending -> rejected 一旦状态确定就不可更改

  3. resolve 和 reject函数是用来更改状态的 resolve:fulfilled reject:rejected

  4. then方法内部做的事情就是判断状态 如果状态是成功,调用成功回调函数 如果状态是失败,就调用失败回调函数 then方法是被定义在原型对象中的

  5. then成功回调有一个参数,表示成功之后的值;then失败回调有一个参数,表示失败后的原因

posted @ 2021-09-18 00:43  一个动态类型的幽灵  阅读(70)  评论(0编辑  收藏  举报