最簡單代碼實現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)

}

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章