學習ES-6Promise對象

首先了解一下什么是Promise:

Promise簡單來說就是個替代回調(diào)函數(shù)執(zhí)行的東東,作為異步操作的處理方法之一。

(回調(diào)函數(shù)是指在作為對象傳入主函數(shù),在在主函數(shù)處理完之后執(zhí)行的函數(shù))

那么為什么要用這個呢?

日常經(jīng)常有那種執(zhí)行完一個函數(shù)繼續(xù)執(zhí)行下一個函數(shù)的需求,例如最簡單的每秒輸出數(shù)字1.2.3....,這樣會形成嵌套,就像套娃娃一樣,一個大的里面有一個小的,處理起來很麻煩。

舉個小栗子:


所以我們要進行處理操作,一般promise有三種狀態(tài):pending(等待態(tài)),fulfiled(成功態(tài)),rejected(失敗態(tài));

常見寫法為:

let p = ?new Promise(resolve, reject){}.then();

例子:

原來的寫法


按照Promise的寫法


Promise的構(gòu)造函數(shù)接收一個參數(shù),是函數(shù),并且傳入兩個參數(shù):resolve,reject,分別表示異步操作執(zhí)行成功后的回調(diào)函數(shù)和異步操作執(zhí)行失敗后的回調(diào)函數(shù).

按照標準來講,其實resolve是將Promise的狀態(tài)置為fullfiled,reject是將Promise的狀態(tài)置為rejected,promise的常用用法.

注意:在then方法中的function 調(diào)用的next方法,一定要用return ,否則不會通過resolve把數(shù)據(jù)往下傳遞( 通俗點講就是下一個異步操作,接收不到上一步的結(jié)果 ).

then能接受兩個參數(shù),由reject傳數(shù)據(jù)給第二函數(shù);


和then不同?catch 是用于接受錯誤信息的(reject)(推薦用這種)


resolve所給的值由then接受,reject的值由catch接受。


Promise.all 與?Promise.race

這兩者有何不同呢,一個是在全部異步加載完之后顯示全部,一個是執(zhí)行完最快的那個立馬顯示

例如:


瀏覽器上顯示:


race:


瀏覽器上顯示:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容