成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6的Promise知識點總結(jié)

ivan_qhz / 1024人閱讀

摘要:執(zhí)行時機新建后會立即執(zhí)行,同步的,但是和的回調(diào)函數(shù)是異步的,但是它的回調(diào)是放在本輪循環(huán)的末尾執(zhí)行,并不是放到下次事件循環(huán)中執(zhí)行。在狀態(tài)改變后再添加回調(diào)函數(shù)仍能立即得到結(jié)果,這是與事件的區(qū)別,事件結(jié)束再去監(jiān)聽,是得不到結(jié)果的。

簡介
本文只是針對對Promise有一定掌握的人士,列舉了Promise需要記住和掌握的關(guān)鍵點,不是講Promise的基礎(chǔ)知識。如果是學習Promise,請移步阮一峰老師的博客。
執(zhí)行時機
Promise新建后會立即執(zhí)行,同步的,但是resolved和rejected的回調(diào)函數(shù)是異步的,
但是它的回調(diào)是放在本輪循環(huán)的末尾執(zhí)行,并不是放到下次事件循環(huán)中執(zhí)行。
Promise 三種狀態(tài)

pending (進行中)

fulfilled (已成功)

rejected (已失?。?/p>

三種狀態(tài)只能是由pending到fulfilled,或由pending到rejected。狀態(tài)一旦改變,不會再變。
在狀態(tài)改變后再添加回調(diào)函數(shù)仍能立即得到結(jié)果,這是與事件的區(qū)別,事件結(jié)束再去監(jiān)聽,是得不到結(jié)果的。
Resolve

參數(shù)會傳遞給then回調(diào)函數(shù)

和rejected都不會終止后續(xù)代碼執(zhí)行,resolved后面的代碼仍會執(zhí)行,除非在resolved時return

當resolved的參數(shù)是一個promise實例時,會等待上一個promise的狀態(tài)返回

Rejected

參數(shù)傳遞給回調(diào)函數(shù)

參數(shù)通常是Error對象的實例

運行拋出異常,狀態(tài)也會變?yōu)镽ejected

catch

不僅狀態(tài)變?yōu)閞ejected時會觸發(fā),運行中拋出的錯誤也會被catch捕獲

resolve之后拋出的異常,不會被捕獲,狀態(tài)只會更改一次,更改后就不會改變。

“冒泡”性質(zhì),一直向后傳遞,直到被捕獲。也就是說錯誤肯定會被后面的catch捕獲。

如果不寫catch,promise有錯誤時,不會有任何反應,不會退出進程、終止腳本執(zhí)行,promise和外部代碼“隔離”(未來可能更改這規(guī)則)

后面可以繼續(xù)跟then和catch

返回一個resolved狀態(tài)的promise對象,所以如果拋出一個錯誤,只會觸發(fā)第一個catch

then

返回的是一個新的promise對象,不是原來的

不推薦傳rejected回調(diào)函數(shù),這樣無法捕獲resolved回調(diào)函數(shù)中的錯誤

如果函數(shù)中返回的是一個promise,則后面的then會等待這個promise的結(jié)果

finally
finally方法用于指定不管 Promise 對象最后狀態(tài)如何,都會執(zhí)行的操作。
與狀態(tài)無關(guān)的,resolved或rejected了都會觸發(fā)finally(底層也是這么實現(xiàn)的);
但如果promise沒有返回resolved或rejected是不會執(zhí)行的。
Promise.all()

Promise.all方法用于將多個 Promise 實例,包裝成一個新的 Promise 實例。

自動把包裝的實例轉(zhuǎn)化成promise實例

包裝的promise實例都resolved了它就resolved

有一個rejected,它就rejected

如果容器中的實例有自己的catch,則不會觸發(fā)all的catch

因為catch返回是一個新的promise,catch已經(jīng)處理了錯誤,返回的promise是resolved的,所以對all來說是兩個resolved的實例
Promise.race()
和all類似,只是它是有一個實例率先改變狀態(tài)了,它的狀態(tài)就改變了。
Promise.resolve()
把對象轉(zhuǎn)換成promise對象

參數(shù)是一個 Promise 實例

原封不動地返回這個實例。

參數(shù)是一個thenable對象

thenable對象指的是具有then方法的對象,比如下面這個對象。
let thenable = {
  then: function(resolve, reject) {
    resolve(42);
  }
};

resolve會立即執(zhí)行then方法,然后返回一個resolved的promise對象

參數(shù)不是具有then方法的對象,或根本就不是對象

返回一個狀態(tài)是resolved的promise對象

不帶有任何參數(shù)

直接返回一個resolved狀態(tài)的 Promise 對象。(注意promise回調(diào)的執(zhí)行時機)
Promise.reject()
返回一個狀態(tài)為rejected的promise對象
Promise.reject()方法的參數(shù),會原封不動地作為reject的理由,變成后續(xù)方法的參數(shù)。這一點與Promise.resolve方法不一致
Promise.try

這個有需要一些技術(shù)儲備,后續(xù)補充。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94402.html

相關(guān)文章

  • ES6-7

    摘要:的翻譯文檔由的維護很多人說,阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評論0 收藏0
  • ES6 常用識點總結(jié)

    摘要:常用知識總結(jié)之前總結(jié)了中的一些知識點。在年正式發(fā)布了,簡稱,又稱為。作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。 ES6常用知識總結(jié) 之前總結(jié)了es5中js的一些知識點。這段時間看了石川blue老師講解的es6課程,結(jié)合阮一峰老師的es6教程,隨手做了一些筆記和總結(jié)分享給大家。內(nèi)容還是es6主要的知識點,基本沒有什么創(chuàng)新...

    leap_frog 評論0 收藏0
  • ES6 常用識點總結(jié)

    摘要:常用知識總結(jié)之前總結(jié)了中的一些知識點。在年正式發(fā)布了,簡稱,又稱為。作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。 ES6常用知識總結(jié) 之前總結(jié)了es5中js的一些知識點。這段時間看了石川blue老師講解的es6課程,結(jié)合阮一峰老師的es6教程,隨手做了一些筆記和總結(jié)分享給大家。內(nèi)容還是es6主要的知識點,基本沒有什么創(chuàng)新...

    CODING 評論0 收藏0
  • ES6 常用識點總結(jié)

    摘要:常用知識總結(jié)之前總結(jié)了中的一些知識點。在年正式發(fā)布了,簡稱,又稱為。作為構(gòu)造函數(shù)的語法糖,同時有屬性和屬性,因此同時存在兩條繼承鏈。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。 ES6常用知識總結(jié) 之前總結(jié)了es5中js的一些知識點。這段時間看了石川blue老師講解的es6課程,結(jié)合阮一峰老師的es6教程,隨手做了一些筆記和總結(jié)分享給大家。內(nèi)容還是es6主要的知識點,基本沒有什么創(chuàng)新...

    leon 評論0 收藏0

發(fā)表評論

0條評論

ivan_qhz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<