手写 Promise
之前在渡一教育视频中学习到了如何自己手写Promise,记录在这里
正规Promise:
`const p = new Promise((resolve,reject)=>{resolve(1)})`
模拟手写Promise:
const FULLFILLED='fullfilled'
const REJECT='reject'
const PENDING='pending'
class MyPromise{
#state=PENDING
#result=undefined
constructor(executor){
const resolve=(data)=>{
this.#changeState(FULLFILLED,data)
}
const reject=(err)=>{
this.#changeState(REJECT,err)
}
(为什么?原因就是 try catch)
这个是面试常见问题
try{
executor(resolve,reject)
} catch(err) {
reject(err)
}
}
#changeState(state,result)=>{
if(this.#state!==PENDING) {
return
}
this.#state=state
this.#result=result
}
}
const my_promise=new MyPromise((resolve,reject)=>{
resolve('我成功了')
})
下一篇 介绍Promise 中的then方法