手写Promise及分析(一):初步实现promise

分析代码

  let p = new promise((resolve,reject)=>{
   
    resolve('ok')
    //reject('error')
    //throw 'error'
  })
  //这里的promise是我们要去构造的函数,内部有三种情况

从上述代码分析我们要去实现的功能:
1.promise内部需要的属性:promiseResult(记录结果)、promiseStatus(记录状态)
2.需要一个executor解析器new promise(executor),去启动内部代码,当然这个executor函数是需要(resolve,reject)参数的,即executor(resolve,reject)。
3.promise内部肯定就需要resolve和reject两个函数,去改变promise的状态和结果。
接下来就分别实现上述功能。

功能一:添加属性

function promise(executor){
   
	//为promise添加属性
    this.promiseResult = null //默认结果为null
    this.promiseStatus = 'pending'//默认状态为pending
    let that = this //因为调用resolve、reject函数时,函数的默认this是window,因此要注意this指向的问题,用that保存。
}

功能二:executor构造函数(见虚线内部)

  function promise(executor){
   
    this.promiseResult = null //默认结果为null
    this.promiseStatus = 'pending'//默认状态为pending
    

你可能感兴趣的:(javascript,前端)