promise-1

58 阅读1分钟

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;