简单的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核心逻辑实现
首先分析其原理
promise就是一个类 在执行类的时候需要传递一个执行器进去,执行器会立即执行
Promise中有三种状态,分别为成功-fulfilled 失败-rejected 等待-pending pending -> fulfilled pending -> rejected 一旦状态确定就不可更改
resolve 和 reject函数是用来更改状态的 resolve:fulfilled reject:rejected
then方法内部做的事情就是判断状态 如果状态是成功,调用成功回调函数 如果状态是失败,就调用失败回调函数 then方法是被定义在原型对象中的
then成功回调有一个参数,表示成功之后的值;then失败回调有一个参数,表示失败后的原因