js css html理论知识JavaScript

22:介绍一下 promise,及其底层如何实现

2022-05-29  本文已影响0人  小小前端搬运工

Promise 是一个对象,保存着未来将要结束的事件,她有两个特征:

1、对象的状态不受外部影响,Promise 对象代表一个异步操作,有三种状态,pending 进行中,fulfilled 已成功,rejected 已失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也就是 promise 名字的由来

2、一旦状态改变,就不会再变,promise 对象状态改变只有两种可能,从 pending 改到 fulfilled 或者从 pending 改到 rejected,只要这两种情况发生,状态就凝固了,不会再改变,这个时候就称为定型 resolved,

Promise 的基本用法,

let promise1 = new Promise(function(resolve,reject){ 
  setTimeout(function(){ 
    resolve('ok') 
  },1000) 
})
promise1.then(function success(val){ 
  console.log(val) 
})
最简单代码实现 
promise class PromiseM { 
  constructor (process) {
    this.status = 'pending' this.msg = '' process(this.resolve.bind(this), 
    this.reject.bind(this)) return this 
  }
  resolve (val) { 
    this.status = 'fulfilled' this.msg = val 
  }
  reject (err) { 
    this.status = 'rejected' 
    this.msg = err 
  }
  then (fufilled, reject) { 
    if(this.status === 'fulfilled') { 
      fufilled(this.msg) 
    }
    if(this.status === 'rejected') { 
      reject(this.msg) 
    }
  }
}
//测试代码 
var mm=new PromiseM(function(resolve,reject){ 
  resolve('123'); 
}); 
mm.then(function(success){ 
  console.log(success); 
},
function(){ 
  console.log('fail!'); 
});
上一篇下一篇

猜你喜欢

热点阅读