美文网首页
基本的Promise实现2(异步)

基本的Promise实现2(异步)

作者: Phoenixing | 来源:发表于2021-06-08 00:15 被阅读0次

实现

const PENDING = 'pending'
const FULFILLED = 'fulfilled'
const REJECTED = 'rejected'

class MyPromise {
  constructor(executor) {
    executor(this.resolve, this.reject)
  }

  status = PENDING
  value = undefined
  reason = undefined
  
  successCallback = undefined
  failCallback = undefined

  resolve = value => {
    if (this.status !== PENDING) return
    this.status = FULFILLED
    this.value = value
    
    this.successCallback && this.successCallback(value)
  }

  reject = reason => {
    if (this.status !== PENDING) return
    this.status = REJECTED
    this.reason = reason
    
    this.failCallback && this.failCallback(reason)
  }
  
  then(successCallback, failCallback) {
    if (this.status === FULFILLED) {
      successCallback(this.value)
    } else if (this.status === REJECTED) {
      failCallback(this.reason)
    } else {
      this.successCallback = successCallback
      this.failCallback = failCallback
    }
  }
}

module.exports = MyPromise

测试

const MyPromise = require('./04-my-promise-async')

const promise = new MyPromise((resolve, reject) => {
  setTimeout(() => {
    resolve('成功!')
  }, 2000)
  // reject('失败!')
})

promise.then(value => {
  console.log(value)
}, reason => {
  console.log(reason)
})

相关文章

网友评论

      本文标题:基本的Promise实现2(异步)

      本文链接:https://www.haomeiwen.com/subject/jwfdeltx.html