promise
核心1
//new Promise((resolve,reject)=>{
// 1. resolve(data)
//. 2. reject(err)
//. 3. throw new Error('xxxx')
//});
const PENDING = 'PENDING'
const RESOLVE = 'RESOLVE'
const REJECT = 'REJECT'
class Promise {
constructor(fn){
this.state = PENDING
this.data = null
this.reason = null
const resolveFn = (data)=>{
if(this.state === PENDING){
this.state = RESOLVE
this.data = data;
}
}
const rejectFn = (reason)=>{
if(this.state === PENDING){
this.state = REJECT
this.reason = reason
}
}
try{
fn(resolveFn,rejectFn)
} catch(err){
rejectFn(err)
}
}
}
module.exports = Promise;