Promise實現(更新中)

2021-09-29 04:48:49 字數 1301 閱讀 6276

// promise.js

const

pending

='pending'

;const

fullfilled

='fullfilled'

const

rejected

='rejected'

function

promise

(excutor)

}//如果為pending,就轉化為失敗態

function

reject

(reason)

}try

catch

(e)}

promise.prototype.

then

=function

(onfullied,onrejected)

onfullied=

typeof

(onfullied)

=='function'

?onfullied:value=>value

onrejected=

typeof

(onrejected)

=='function'

?onrejected:reason=>

//以下兩種是,new promise之後,執行同步**

if(self.status==

fullfilled)if

(self.status==

rejected

)//最初將onresolvedcallbacks,onrejectedcallbacks填充函式,解決在new promise裡面使用非同步函式resolve,此時呼叫then還沒有

//開始執行,需要將resolve(value),reject(value)儲存到陣列裡面,等到狀態改變為fullfilled或者rejected時,迴圈陣列,呼叫陣列

//裡面每乙個函式

if(self.status==

pending)}

module.exports=promise

let mypromise =

require

('./promise.js');

let p1=

newmypromise

(function

(resolve,reject)

else})

})p1.then

(function

(data)

,function

(err)

)

關於promise(持續更新)

promise應該是比較高階的 書寫,避免了層層巢狀的 函式,書寫 更優雅。promise要點 1 三種狀態 pending 進行中 resolved 已完成,又稱 fulfilled 和 rejected 已失敗 2 呼叫方法then 成功執行,失敗執行 與 catch 失敗執行 互斥 3 連續的...

自己實現Promise

class mypromise 0 resolve obj reject obj then func,errfunc function fff resolve,reject test var m new mypromise fff var num 1 m.then obj obj console.l...

自己實現Promise

new mypromise resolve,reject then result 最基本的promise 沒有數顯then鏈 class mypromise 為了保證執行resolve reject的時候,已經通過then把需要執行的方法弄好了,我們判斷處理 沒有方法的時候,我們讓改變狀態的操作延遲...