<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery

        來源:懂視網 責編:小采 時間:2020-11-27 21:24:02
        文檔

        Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery

        Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery:Javascript里異步編程逐漸被大家接受,先前大家一般通過回調嵌套,setTimeout、setInterval等方式實現,代碼看起來非常不直觀,不看整個代碼邏輯很難快速理解。Javascript里異步函數大概有I/O函數(Ajax、postMessage、img load、scri
        推薦度:
        導讀Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery:Javascript里異步編程逐漸被大家接受,先前大家一般通過回調嵌套,setTimeout、setInterval等方式實現,代碼看起來非常不直觀,不看整個代碼邏輯很難快速理解。Javascript里異步函數大概有I/O函數(Ajax、postMessage、img load、scri

        Javascript里異步編程逐漸被大家接受,先前大家一般通過回調嵌套,setTimeout、setInterval等方式實現,代碼看起來非常不直觀,不看整個代碼邏輯很難快速理解。Javascript里異步函數大概有I/O函數(Ajax、postMessage、img load、script load等)、計時函數(setTimeout、setInterval)等。

        這些我們都很熟悉,在復雜的應用中往往會嵌套多層,甚至以為某些步驟未完成而導致程序異常,最簡單的例子:比如你往DOM中注入節(jié)點,你必須等待節(jié)點注入后在操作這個節(jié)點,當大量節(jié)點注入的時候,時間往往很難把握。如果我們得代碼依賴第三方api的數據。我們無法獲悉一個API響應的延遲時間,應用程序的其他部分可能會被阻塞,直到它返回結果。Promises對這個問題提供了一個更好的解決方案,它是非阻塞的,并且與代碼完全解耦 。

        那么,我看看Javascript里異步編程,首先推薦大家看看相對來說比較流行的Promises/A規(guī)范。

        Promises/A規(guī)范

        注:為了便于理解,描述可能和Promises/A規(guī)范有所出入;

        CommonJS之Promises/A規(guī)范,通過規(guī)范API接口來簡化異步編程,使我們的異步邏輯代碼更易理解。
        遵循Promises/A規(guī)范的實現我們稱之為Promise對象,Promise對象有且僅有三種狀態(tài):unfulfilled(未完成)、fulfilled(已完成)、failed(失敗/拒絕);初始創(chuàng)建的時候是unfulfilled(未完成)狀態(tài),狀態(tài)只可以從unfulfilled(未完成)變成fulfilled(已完成),或者unfulfilled(未完成)變成failed(失敗/拒絕)。狀態(tài)一旦變成fulfilled(已完成)或者failed(失敗/拒絕),狀態(tài)就不能再變了。

        Promises/A規(guī)范提供了一個在程序中描述延時(或將來)概念的解決方案。主要的思想不是執(zhí)行一個方法然后阻塞應用程序等待結果返回后再回調其他方法,而是返回一個Promise對象來滿足未來監(jiān)聽。fulfilled狀態(tài)和failed狀態(tài)都可以被監(jiān)聽。Promise通過實現一個then接口來返回Promise對象來注冊回調:
        代碼如下:then(fulfilledHandler, errorHandler, progressHandler);

        then接口用于監(jiān)聽一個Promise的不同狀態(tài)。fulfilledHandler用于監(jiān)聽fulfilled(已完成)狀態(tài),errorHandler用于監(jiān)聽failed(失敗/拒絕)狀態(tài),progressHandler用于監(jiān)聽unfulfilled(未完成)狀態(tài)。Promise不強制實現unfulfilled(未完成)的事件監(jiān)聽(例如我們知道舊版本的jQuery(1.5,1.6)的Deferred就是一個Promise的實現,但沒有實現對unfulfilled(未完成)狀態(tài)的監(jiān)聽來回調progressHandler)。

        一般認為,then接口返回的是一個新的Promise對象,而不是原來的Promise對象,這個新的新的Promise對象可以理解為是原來Promise對象的一個視圖,它只包含原有Promise對象的一組方法,這些方法只能觀察原有Promise對象的狀態(tài),而無法更改deferred對象的內在狀態(tài)。這樣可以避免多個調用者之間的沖突,多個調用者可以通過改變新的Promise對象狀態(tài)而不影響別的調用者。

        另外,Promise提供了resolve(實現狀態(tài)由未完成到已完成)和reject(實現狀態(tài)由未完成到拒絕或失敗)兩個接口實現狀態(tài)的轉變。

        發(fā)一張圖片幫助理解一下:

        有了Promise,就可以以同步的思維去編寫異步的邏輯了。在異步函數里,不能使用try/catch捕獲異常,也不能拋出異常。有了Promise,我們可以直接顯式定義errorHandler,相當于捕獲異常。

        以下是幾個遵循Promises/A規(guī)范的類庫,when,q,rsvp.js,jQuery.Deferred等等。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery

        Javascript中的異步編程規(guī)范Promises/A詳細介紹_jquery:Javascript里異步編程逐漸被大家接受,先前大家一般通過回調嵌套,setTimeout、setInterval等方式實現,代碼看起來非常不直觀,不看整個代碼邏輯很難快速理解。Javascript里異步函數大概有I/O函數(Ajax、postMessage、img load、scri
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲小说图区综合在线| 亚洲人成在线免费观看| 精品国产日韩亚洲一区91| 精品熟女少妇AV免费观看| 亚洲欧洲另类春色校园网站| 久久久久久国产精品免费无码| 亚洲一区二区三区首页| 一级毛片**不卡免费播| 久久精品国产亚洲av高清漫画| 久久99精品国产免费观看| 亚洲高清中文字幕| 91成年人免费视频| 男人天堂2018亚洲男人天堂| 24小时免费直播在线观看| 亚洲av成人中文无码专区| 免费A级毛片在线播放不收费| 美女视频黄视大全视频免费的| 亚洲伦乱亚洲h视频| 日本道免费精品一区二区| 亚洲AV无码乱码国产麻豆穿越| www视频在线观看免费| 亚洲13又紧又嫩又水多| 啊灬啊灬别停啊灬用力啊免费看| 视频免费1区二区三区| 国产精品亚洲精品日韩已满| 久久午夜无码免费| 亚洲13又紧又嫩又水多| 国产午夜影视大全免费观看| 久久99精品免费一区二区| 亚洲精品视频免费看| 日韩免费一区二区三区| 成在人线av无码免费高潮水 | 久久免费99精品国产自在现线| 国产成A人亚洲精V品无码| 操美女视频免费网站| 亚美影视免费在线观看 | 日本亚洲精品色婷婷在线影院| 免费一级一片一毛片| 久久成人免费大片| AV激情亚洲男人的天堂国语| 久久精品国产亚洲综合色|