国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Promise的理解

Binguner / 2037人閱讀

摘要:中就是一個(gè)構(gòu)造函數(shù)函數(shù)也是對(duì)象為什么需要多個(gè)嵌套的異步操作,如果直接用方式,會(huì)導(dǎo)致的出現(xiàn)使得異步操作更加規(guī)范,更加統(tǒng)一。的方法構(gòu)造函數(shù)構(gòu)造函數(shù)用于生成對(duì)象,函數(shù)在構(gòu)造函數(shù)執(zhí)行時(shí)同步執(zhí)行。

什么是Promise?

含以上:抽象異步操作的工具。
javascript中:Promise就是一個(gè)構(gòu)造函數(shù)(函數(shù)也是對(duì)象)

為什么需要Promise?

1.多個(gè)嵌套的異步操作,如果直接用callback方式,會(huì)導(dǎo)致callback hell
2.Promise的出現(xiàn)使得異步操作更加規(guī)范,API更加統(tǒng)一。
3.多個(gè)異步操作之間較復(fù)雜的關(guān)系可以簡(jiǎn)單通過(guò)Promise處理。

Promise的三種狀態(tài)

fulfilled:滿足,成功
rejected:拒絕,失敗
pending:初始狀態(tài)
注:settled是指fulfilled,rejected狀態(tài)之一。

Promise的方法: Promise()構(gòu)造函數(shù)
Promise(
    //executor
    function( resolve,reject){
    }
);

構(gòu)造函數(shù)用于生成Promise對(duì)象,executor函數(shù)在Promise構(gòu)造函數(shù)執(zhí)行時(shí)同步執(zhí)行。
resolve,reject函數(shù)被調(diào)用時(shí)分別將Promise狀態(tài)設(shè)置為fulfilled,rejected

new Promise( (resolve, reject)=>{
    resolve( "resolved value" );
});

new Promise( (resolve, reject)=>{
    reject( "rejected value" );
});
Promise.resolve, Promise.reject

Promise還提供了全局的靜態(tài)方法用于快速生成Promise對(duì)象。
Promise.resolve生成fulfilled狀態(tài)的Promise
Promise.reject生成rejected狀態(tài)的Promise

    Promise.resolve( "resolved value" );
    Promise.reject( "rejected value" );
Promise實(shí)例方法:then( onfulfilled, onrejected ), catch( onrejected )

then和catch用于處理Promise fullfilled成功或者rejected失敗時(shí)候的情況。
更加推薦的做法:
myPromise.then(onfulfilled).catch(onrejected);
這樣的好處:
1.then,catch區(qū)分開,分別處理成功,失敗,代碼更容易理解。
2.then().then().then().catch(); then,catch方式可以捕獲到前面多個(gè)then中的異常。

Promise可以鏈?zhǔn)秸{(diào)用的原因?

因?yàn)镻romise.prototype.then方法和Promise.prototype.catch方法都返回Promise對(duì)象。所以可以鏈?zhǔn)秸{(diào)用:

myPromise.then(xxx).then(xxx);
Promise.prototype.then(onfulfilled, onrejected)當(dāng)中,then返回的Promise和onfulfilled,onrejected的返回值有什么聯(lián)系?
onfulfilled,onrejected的返回值 then,catch的返回值
值(常用)
fulfilled Promise
fulfilled Promise
throw Error異常
rejected Promise
rejected Promise
pending Promise pending Promise
多個(gè)Promise關(guān)聯(lián)操作

假設(shè)有A/B/C三個(gè)Promise
1.A執(zhí)行完才能執(zhí)行B,B執(zhí)行完才能執(zhí)行C
典型的順序執(zhí)行關(guān)系,直接使用鏈?zhǔn)讲僮鳎?/p>

A.then(()=>{return B})
 .then(()=>{return C});

2.A/B執(zhí)行成功了才能執(zhí)行C

Promise.all([A,B]).then(
()=>{
    return C;
}
);

3.ABC中任意一個(gè)settled即可:
Promise([A,B,C]).then(xxx).catch(xxx);
注意:第一個(gè)Promise settled之后,不會(huì)取消剩余的Promise對(duì)象的執(zhí)行。

額外知識(shí):

1.Promise.resolve方法除了快速創(chuàng)建Promise以外,還能夠?qū)henable(有.then方法的對(duì)象)對(duì)象轉(zhuǎn)換為Promise。 典型的$.ajax()就會(huì)返回thenable對(duì)象。

2.then(onfulfilled, onrejected)中的onfulfilled,onrejected方法是異步調(diào)用的即時(shí)在調(diào)用Promise.prototype.then注冊(cè)Promise時(shí),Promise已經(jīng)setteled,這2個(gè)函數(shù)也不會(huì)馬上同步執(zhí)行。Promise會(huì)以異步方式調(diào)用該回調(diào)函數(shù),這個(gè)Promise設(shè)計(jì)上的規(guī)定方針。

3.如果如果沒有注冊(cè)onrejected函數(shù),那么異常會(huì)拋出,只是捕獲不了。

4.盡量不要使用非鏈?zhǔn)讲僮鱌romise對(duì)象, 非鏈?zhǔn)讲僮髑闆r下異常不會(huì)被捕獲,也不能得到then的返回值(即時(shí)then有返回值的情況)

5.使用reject而不是throw來(lái)觸發(fā)Promise失敗,因?yàn)閠hrow的話很難區(qū)分是主動(dòng)拋出的rejected還是程序執(zhí)行出錯(cuò)。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/88673.html

相關(guān)文章

  • JavaScript 異步

    摘要:從最開始的到封裝后的都在試圖解決異步編程過(guò)程中的問(wèn)題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。寫一個(gè)符合規(guī)范并可配合使用的寫一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來(lái)處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問(wèn)題描述 在開發(fā)過(guò)程中,遇到一個(gè)需求:在系統(tǒng)初始化時(shí)通過(guò)http獲取一個(gè)第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個(gè)接口,可通過(guò)...

    tuniutech 評(píng)論0 收藏0
  • ES6-7

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

    mudiyouyou 評(píng)論0 收藏0
  • 理解 Javascript 中 Promise

    摘要:理解承諾有兩個(gè)部分。如果異步操作成功,則通過(guò)的創(chuàng)建者調(diào)用函數(shù)返回預(yù)期結(jié)果,同樣,如果出現(xiàn)意外錯(cuò)誤,則通過(guò)調(diào)用函數(shù)傳遞錯(cuò)誤具體信息。這將與理解對(duì)象密切相關(guān)。這個(gè)函數(shù)將創(chuàng)建一個(gè),該將在到秒之間的隨機(jī)數(shù)秒后執(zhí)行或。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! showImg(https://segmentfault.com/img/bVbkNvF?w=1280&h=...

    paulli3 評(píng)論0 收藏0
  • 理解 Javascript 中 Promise

    摘要:理解承諾有兩個(gè)部分。如果異步操作成功,則通過(guò)的創(chuàng)建者調(diào)用函數(shù)返回預(yù)期結(jié)果,同樣,如果出現(xiàn)意外錯(cuò)誤,則通過(guò)調(diào)用函數(shù)傳遞錯(cuò)誤具體信息。這將與理解對(duì)象密切相關(guān)。這個(gè)函數(shù)將創(chuàng)建一個(gè),該將在到秒之間的隨機(jī)數(shù)秒后執(zhí)行或。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! showImg(https://segmentfault.com/img/bVbkNvF?w=1280&h=...

    chaos_G 評(píng)論0 收藏0
  • Promise理解與實(shí)現(xiàn)

    摘要:對(duì)象設(shè)置初始狀態(tài)默認(rèn)為等待狀態(tài)用數(shù)組來(lái)保存成功函數(shù)設(shè)置為成功狀態(tài)設(shè)置為失敗狀態(tài)調(diào)用回調(diào)函數(shù)增加方法根據(jù)狀態(tài)執(zhí)行成功失敗方法執(zhí)行成功方法執(zhí)行失敗方法將成功失敗方法保存在數(shù)組里 promise理解 promise的意思是承諾。承諾理解為某個(gè)時(shí)候一些條件滿足后,會(huì)兌現(xiàn)一件事情。 //為了方便理解我編一個(gè)小故事 //先假裝我有一個(gè)女朋友 //她承諾如果她爸媽不回來(lái)就給我就可以去幫她修電腦 否則...

    hlcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<