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

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!'); 
});
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容