<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      promise

      Promise

      • promise是ES6引入的異步編程的新的解決方案,從語法上來說,它是一個(gè)構(gòu)造函數(shù),可以實(shí)例化對(duì)象,封裝異步操作,獲取成功和失敗的結(jié)果,其優(yōu)點(diǎn)是支持鏈?zhǔn)秸{(diào)用可以解決回調(diào)地獄問題指定回調(diào)函數(shù)的方式更為靈活

      1.準(zhǔn)備

      • promise是ES6引入的進(jìn)行異步編程的新的解決方案,從語法上來說,它就是一個(gè)構(gòu)造函數(shù),可以封裝異步的任務(wù),并且可以對(duì)結(jié)果進(jìn)行處理,promise最大的好處在于可以解決回調(diào)地獄的問題,并且它在指定回調(diào)與進(jìn)行錯(cuò)誤處理這塊要更加的靈活與方便,而且promise在現(xiàn)代的項(xiàng)目當(dāng)中無論是web還是app的項(xiàng)目當(dāng)中都應(yīng)用的十分廣泛,無論是前端還是后端都可以看到promise的身影。

      異步編程

      • fs文件操作
      • 數(shù)據(jù)庫(kù)操作
      • AJAX
      • 定時(shí)器

      2.Proise介紹與基本使用

      2.1 Promise 是什么?

      2.1.1 理解

      1. 抽象表達(dá)
      • Pormise 是一門新的技術(shù)(ES6規(guī)范)
      • Promise 是JS中進(jìn)行異步編程的新的解決方案
      • 備注:舊方案是單純使用回調(diào)函數(shù)
      1. 具體表達(dá)
      • 從語法上來說:Promise是一個(gè)構(gòu)造函數(shù)
      • 從功能上來說:Promise對(duì)象用來封裝一個(gè)異步操作并可以獲取其中成功/失敗的結(jié)果

      2.1.2 Promise 的狀態(tài)改變

      • 實(shí)例對(duì)象中的一個(gè)屬性 [PromiseState]
        • pending 未決定的
        • resolved/fullfilled 成功
        • rejected 失敗
      • 實(shí)例對(duì)象中的另一個(gè)值 [PromiseResult]
        • 保存著對(duì)象異步任務(wù)成功/失敗的結(jié)果
      1. pending 變?yōu)閞esolved
      2. pending 變?yōu)閞ejected
      • 說明:只有這兩種,且一個(gè)promise對(duì)象只能改變一次,無論變?yōu)槌晒€是失敗,都會(huì)有一個(gè)結(jié)果數(shù)據(jù),成功的結(jié)果一般稱為value,失敗的結(jié)果一般稱為reason

      2.1.3 Promise的基本流程

      • new Promise()[pending狀態(tài)]
      • 執(zhí)行異步操作
        • 成功了,執(zhí)行resovle()
          • promise對(duì)象[resolved狀態(tài)]
          • 回調(diào)onResolved()[then]
          • 新的promise對(duì)象
        • 失敗了,執(zhí)行reject()
          • promise對(duì)象[rejected狀態(tài)]
          • 回調(diào)onRejected()[then()/catch()]
      • 新的Promise對(duì)象

      2.2 為什么要用Promise?

      2.2.1 指定回調(diào)函數(shù)的方式更加靈活

      1. 舊的:必須在啟動(dòng)異步任務(wù)前指定
      2. promise:?jiǎn)?dòng)異步任務(wù)=>返回Promise對(duì)象=>給Promise對(duì)象綁定回調(diào)函數(shù)(甚至可以在異步任務(wù)結(jié)束后指定/多個(gè))

      2.2.2 支持鏈?zhǔn)秸{(diào)用,可以解決回調(diào)地獄問題

      1. 什么是回調(diào)地獄
      • 回調(diào)函數(shù)嵌,外部回調(diào)函數(shù)異步執(zhí)行的結(jié)果是嵌套的回調(diào)執(zhí)行的條件
      1. 回調(diào)地獄的缺點(diǎn)
      • 不便于閱讀
      • 不便于異常處理
      1. 解決方案?
      • promise鏈?zhǔn)秸{(diào)用

      2.3 如何使用Promise?

      2.3.1 API

      1. Promise 構(gòu)造函數(shù):Promise(executor){}
      • executor函數(shù):執(zhí)行器(resolve,reject)=>{}
      • resovle函數(shù):內(nèi)部定義成功時(shí)我們調(diào)用的函數(shù)value=>{}
      • reject函數(shù):內(nèi)部定義失敗時(shí)我們調(diào)用的函數(shù)reson=>{}
      • 說明:executor會(huì)在Promise內(nèi)部立即同步調(diào)用,異步操作在執(zhí)行器中執(zhí)行
      1. Promise.prototype.then 方法:(onResolved,onRejected)=>{}
      • onResolved函數(shù):成功的回調(diào)函數(shù)(value)=>{}
      • onRejected函數(shù):失敗的回調(diào)函數(shù)(reason)=>{}
      • 說明:指定用于得到成功value的成功回調(diào)和用于得到失敗reason的失敗回調(diào),返回一個(gè)新的promise對(duì)象
      1. Promise.prototype.catch方法:(onRejected)=>{}
      • onRejected函數(shù):失敗的回調(diào)函數(shù)(reason)=>{}
      1. Promise.resolve方法:(value)=>{}
      • value:成功的數(shù)據(jù)或promise對(duì)象
      • 說明返回一個(gè)成功/失敗的promise對(duì)象
      1. Promise.reject 方法:(reason)=>{}
      • reason:失敗的原因
      • 說明:返回一個(gè)失敗的promise對(duì)象
      1. Promise.all方法:(promises)={}
        • promises:包含n個(gè)promise的數(shù)組
        • 說明:返回一個(gè)新的promise,只有所有的promise都成功才成功,只要有一個(gè)失敗了就直接失敗
      2. Promise.race方法:(promises)=>{}
      • promises:包含n個(gè)promise的數(shù)組
      • 說明:返回一個(gè)新的promise,第一個(gè)完成的promise的結(jié)果狀態(tài)就是最終的結(jié)果狀態(tài)

      2.3.2 promise的幾個(gè)關(guān)鍵問題

      1. 如何改變promise的狀態(tài)?
      • resolve(value):如果當(dāng)前是pending就會(huì)變?yōu)閞esolved
      • reject(reason):如果當(dāng)前是pending就會(huì)變?yōu)閞ejected
      • 拋出異常:如果當(dāng)前是pending就會(huì)變?yōu)閞ejected
      1. 一個(gè)promise指定多個(gè)成功/失敗回調(diào)函數(shù),都會(huì)執(zhí)行嗎?
      • 當(dāng)promise改變?yōu)閷?duì)應(yīng)狀態(tài)時(shí)都會(huì)調(diào)用
      1. 改變promise狀態(tài)和指定回調(diào)函數(shù)誰先誰后?
      • 都有可能,正常情況下是先指定回調(diào)再改變狀態(tài),但也可以先改變狀態(tài)再指定回調(diào)
      • 如何先改變狀態(tài)再指定回調(diào)?
        • 在執(zhí)行器中直接調(diào)用resovled()/rejected()
        • 延遲更長(zhǎng)時(shí)間才調(diào)用then
      • 什么時(shí)候才能得到數(shù)據(jù)?
        • 如果先指定的回調(diào),那當(dāng)狀態(tài)發(fā)生改變時(shí),回調(diào)函數(shù)就會(huì)調(diào)用,得到數(shù)據(jù)
        • 如果先改變的狀態(tài),那當(dāng)指定回調(diào)時(shí),回調(diào)函數(shù)就會(huì)調(diào)用,得到數(shù)據(jù)
      1. Promise.then() 返回的新promise的結(jié)果狀態(tài)由什么決定?
      • 簡(jiǎn)單表達(dá):由then()指定的回調(diào)函數(shù)執(zhí)行的結(jié)果決定
      • 詳細(xì)表達(dá):
        • 如果拋出異常,新的promise改變?yōu)閞ejected,reason為拋出的異常
        • 如果返回的是非promise的任意值,新Promise變?yōu)閞esolved,value為返回的值
        • 如果返回的是另外一個(gè)新Promise,此Promise的結(jié)果就會(huì)稱為新Promise的結(jié)果
      1. promise如何串連多個(gè)操作任務(wù)?
      • Promise的then()返回一個(gè)新的Promise,可以形成then()的鏈?zhǔn)秸{(diào)用
      • 通過then的鏈?zhǔn)秸{(diào)用串連多個(gè)同步/異步任務(wù)
      1. Promise異常穿透
      • 當(dāng)使用promise的then鏈?zhǔn)秸{(diào)用時(shí),可以在最后指定失敗的回調(diào)
      • 前面任何操作出了異常,都會(huì)傳到最后失敗的回調(diào)中處理
      1. 中斷promise鏈?
      • 當(dāng)使用Promse的then鏈?zhǔn)秸{(diào)用時(shí),在中間中斷,不再調(diào)用后面的回調(diào)函數(shù)
      • 辦法:在回調(diào)函數(shù)中返回一個(gè)pendding狀態(tài)的Promise對(duì)象

      4.async 與 await

      4.2 async 函數(shù)

      1. 函數(shù)的返回值為promise對(duì)象
      2. promise對(duì)象的結(jié)果由async函數(shù)執(zhí)行的返回值決定

      4.3 await 表達(dá)式

      1. await右側(cè)的表達(dá)式一般為promise對(duì)象,但也可以是其他的值
      2. 如果表達(dá)式是promise對(duì)象,await返回的是promise成功的值
      3. 如果表達(dá)式是其他值,直接將此值作為await的返回值

      4.4 注意

      1. await必須卸載async函數(shù)中,但async函數(shù)中可以沒有await
      2. 如果await的promise失敗了,就會(huì)拋出異常,需要通過try...cantch捕獲處理
      posted @ 2024-10-18 16:10  小章子  閱讀(67)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产一区二区三区怡红院| 亚洲熟女乱色综合一区 | 52熟女露脸国语对白视频| 美女胸18大禁视频网站| 亚洲精品三区四区成人少| 久青草视频在线视频在线| 亚洲中文字幕无码一区日日添| 国产午夜福利精品视频| 久久九九久精品国产免费直播 | 亚洲熟妇乱色一区二区三区| AV免费网址在线观看| 亚洲男女羞羞无遮挡久久丫| 99精品国产一区二区三区| 亚洲av成人精品免费看| 日本一区二区三区在线播放| 国产精品亚洲а∨天堂2021| 国产在线国偷精品产拍| 亚洲精品国产综合久久一线| 日韩精品有码中文字幕| 欧美日本激情| 国语自产拍精品香蕉在线播放| 亚洲 欧美 综合 另类 中字| 国产麻豆成人传媒免费观看| 老太脱裤子让老头玩xxxxx| 99热成人精品热久久66| 久热这里只有精品视频3| 国产裸体无遮挡免费精品| 亚洲一区二区三区在线观看播放| 亚洲熟妇精品一区二区| 麻豆精品在线| 日本欧美一区二区免费视频| 制服 丝袜 亚洲 中文 综合| 欧美成年黄网站色视频| 狠狠色婷婷久久综合频道日韩| 亚洲国产在一区二区三区| 日韩高清福利视频在线观看| 国产成人精品无码专区| 成人精品日韩专区在线观看| 国语精品自产拍在线观看网站| 丰满多毛的大隂户视频| 粉嫩一区二区三区精品视频|