自己實現Promise

2021-08-21 16:22:52 字數 638 閱讀 3462

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.log(obj))

這個mypromise實現了基本的resolve和reject的功能,resolve和reject的狀態一旦被設定就不能更改。

這裡需要說明下建構函式中的settimeout:

在js當中不考慮worker的情況,一切都是單執行緒的,但是js引擎有著自己的乙個任務佇列,在js程式的執行過程中,會把一些任務逐個加入到佇列中,然後依次執行他們。而settimeout其實就是把乙個任務在一定的延時時候新增到這個佇列中,但是新增到佇列中不代表會立即執行,而是要等到上乙個任務執行結束。因此,這裡的延時零秒的任務會等待當前的程式(最為佇列的最前任務)執行完畢,才執行。而當前的程式已經呼叫了then向promise的task佇列中新增了要執行的函式,所以後面的resolve就能夠用這些函式了。

自己實現Promise

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

寫給自己看的Promise

static pending pending 準備狀態 static fulfilled fulfilled 解決狀態 static rejected rejected 拒絕狀態 1.初始化狀態 值 then中沒 有處理的函式陣列 2.將resolve和reject函式傳遞 出去 construct...

自己對Promise的簡單理解

promise在建立時,會先執行自己裡面的內容function initpromise else initpromise then success catch error promise.all 方法用於將多個promise例項,包裝成乙個新的promise例項,他是並行執行的。例子 例如乙個頁面的...