/**
1.promise是一个类,在执行类的时候,需要传递一个执行器进去,执行器会立即执行
2.promise 有三种状态 成功fulfilled 失败 rejected 等待 pengding
状态确定后不可修改
3.resolve及reject是用来改变状态的
resolve: fulfilled
reject: rejected
4. then方法内部判断状态 如果状态是成功,调用成功,若失败,调用失败
5.then成功回调有一个参数 表示成功之后的值 then失败之后 有一个参数表示失败后的原因
6. 增加异步调用
7. 处理多个then方法调用
8. 多个then的链式调用
*/
let promise1 = new Promise((resolve,reject)=>{
resolve('成功')
reject("失败")
})
promise1.then(()=>{
},()=>{
})
const MyPromise = require('./myPromise')
let promise2 = new MyPromise((resolve,reject)=>{
setTimeout(()=>{
resolve('成功')
},2000)
// reject("失败")
})
promise2.then((value)=>{
console.log(value)
},(err)=>{
console.log(err)
})
promise2.then((value)=>{
console.log(value)
return 100;
}).then(value=>console.log(value))
const PENDING = 'pending' //等待
const FULFILLED = 'fulflled' //成功
const REJECTED = 'rejected' //成功
class MyPromise{
constructor(executor){
executor(this.resolve,this.reject)
}
status = PENDING;
// 成功的值
value = undefined;
// 失败的原因
reason = undefined;
successCalback = [];
failCallback = [];
resolve = (value) =>{
// 只有pengding状态可以修改status,若不是,阻止向下执行
if(this.status !== PENDING) return;
// 修改状态成功
this.status = FULFILLED;
// 保存成功之后的值
this.value = value;
// 需要判断成功回调是否存在,存在调用
// this.successCalback && this.successCalback
自定义Promise 简易实现
最新推荐文章于 2024-05-26 09:45:58 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)