最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS ES6異步解決方案

 更新時間:2021年04月29日 10:56:59   作者:淺笑·  
這篇文章主要介紹了JS ES6異步解決方案,對異步感興趣的同學(xué),可以參考下

最初使用回調(diào)函數(shù)

​ 由于最初j s官方?jīng)]有明確的規(guī)范,各種第三方庫中封裝的異步函數(shù)中傳的回調(diào)函數(shù)中的參數(shù)沒有明確的規(guī)范, 沒有明確各個參數(shù)的意義, 不便于使用。

​ 但是node中有明確的規(guī)范

​ node中的的回調(diào)模式:

1. 所有回調(diào)函數(shù)必須有兩個參數(shù),第一個參數(shù)表示錯誤,第二個參數(shù)表示結(jié)果

2. 所有回調(diào)函數(shù)必須作為函數(shù)最后的參數(shù)

3. 所有回調(diào)函數(shù)不能作為屬性出現(xiàn)

es6 異步處理模型

Es6 出現(xiàn)以后, 官方就提出了異步處理的規(guī)范, 提出了一種適用于所有異步場景的處理模型。該模型有:

  • 兩個階段: 未決unsettled, 已決settled。
  • 三個狀態(tài): pending掛起狀態(tài) , resolved成功, rejected失敗
  • 總是從未決階段推向已決階段,且已決階段的狀態(tài)不再改變

任務(wù)已決狀態(tài)后可能需要后續(xù)處理,

  • 針對resolved的后續(xù)處理我們稱之為thenable
  • 針對rejected的后續(xù)處理我們稱之為catchable

為該異步模型量身打造的API : promise

如何使用promise

Copy

const task = new Promise((resolve, reject) => {     
    // 任務(wù)未決階段代碼  
    // 立即執(zhí)行  
    console.log("開始100米長跑");  
    setTimeout(() => {  
       if (Math.random() > 0.5) {  
           // 成功: 跑完了  
           // 推向成功  
           resolve("跑完了");  
       } else {  
           // 失?。?腿摔斷了  
           // 推向失敗  
           reject("腿摔斷了");  
       }  
    }, 1000)
});
task.then((result) => {
  console.log(result);
}).catch((error) => {
  console.log(error);
})

1s 后任務(wù)推向已決, 后續(xù)處理在then 或者 catch中 處理。

注意

pending狀態(tài) =》rejected狀態(tài) :

Copy

1. 調(diào)用reject

2. 代碼執(zhí)行報錯

3. 手動拋出錯誤

后續(xù)處理函數(shù)一定是異步的,且會放到微隊列中,

j s執(zhí)行棧清空后會先執(zhí)行微隊列中的任務(wù),微隊列里任務(wù)清空后才會執(zhí)行宏隊列中的任務(wù)。

  • 宏任務(wù)隊列有:setTimeout,setInterval,setImmediately,I/O,UI render
  • 微任務(wù)隊列有:promise,process.nexttick,Object.observe(已經(jīng)不用了),Mutation.observe

Async await 是es7新增的promise的語法糖大家也可以了解下,本文只是對promise做了個概述,要掌握的其他細節(jié)還有很多

以上就是JS ES6異步解決方案的詳細內(nèi)容,更多關(guān)于ES6異步解決方案的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • js腳本獲取webform服務(wù)器控件的方法

    js腳本獲取webform服務(wù)器控件的方法

    asp.net webform中獲取服務(wù)器控件,js腳本獲取服務(wù)器控件需要使用ClientID,下面有個示例,大家可以參考下
    2014-05-05
  • JS實現(xiàn)的自定義右鍵菜單實例二則

    JS實現(xiàn)的自定義右鍵菜單實例二則

    這篇文章主要介紹了JS實現(xiàn)的自定義右鍵菜單,以兩則實例形式分析了javascript自定義右鍵菜單效果的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JavaScript設(shè)計模式發(fā)布訂閱模式

    JavaScript設(shè)計模式發(fā)布訂閱模式

    這篇文章主要介紹了JavaScript設(shè)計模式發(fā)布訂閱模式,發(fā)布訂閱設(shè)計模式是和觀察者設(shè)計模式基本上相同,但是他們兩個設(shè)計模式不同的是發(fā)布訂閱者擁有一個事件處理中心而觀察者并沒有
    2022-06-06
  • el表達式 寫入bootstrap表格數(shù)據(jù)頁面的實例代碼

    el表達式 寫入bootstrap表格數(shù)據(jù)頁面的實例代碼

    這篇文章主要介紹了el表達式 寫入bootstrap表格數(shù)據(jù)頁面的實例代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-01-01
  • Taro?小程序持續(xù)集成實現(xiàn)及原理

    Taro?小程序持續(xù)集成實現(xiàn)及原理

    這篇文章主要為大家介紹了Taro?小程序持續(xù)集成實現(xiàn)及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 簡單了解微信小程序 e.target與e.currentTarget的不同

    簡單了解微信小程序 e.target與e.currentTarget的不同

    這篇文章主要介紹了微信小程序 e.target與e.currentTarget的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • JS閉包用法實例分析

    JS閉包用法實例分析

    這篇文章主要介紹了JS閉包用法,結(jié)合具體實例形式分析了javascript閉包的原理、執(zhí)行步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • JavaScript 通過模式匹配實現(xiàn)重載

    JavaScript 通過模式匹配實現(xiàn)重載

    昨天rank同學(xué)向我提出一個問題,在實際應(yīng)用中有些接口需要提供類似于函數(shù)重載的功能,以方便開發(fā)者組織代碼邏輯,簡化使用者調(diào)用。
    2010-08-08
  • JavaScript前后端數(shù)據(jù)交互工具ajax使用教程

    JavaScript前后端數(shù)據(jù)交互工具ajax使用教程

    Ajax(Asynchronous?Javascript?And?XML),即是異步的JavaScript和XML,Ajax其實就是瀏覽器與服務(wù)器之間的一種異步通信方式
    2022-10-10
  • Vue之vue-tree-color組件實現(xiàn)組織架構(gòu)圖案例詳解

    Vue之vue-tree-color組件實現(xiàn)組織架構(gòu)圖案例詳解

    這篇文章主要介紹了Vue之vue-tree-color組件實現(xiàn)組織架構(gòu)圖案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評論

景洪市| 安宁市| 怀柔区| 麻江县| 大同县| 五台县| 昌黎县| 黑山县| 柏乡县| 渭南市| 安泽县| 禄丰县| 甘洛县| 聊城市| 枞阳县| 邻水| 徐闻县| 渝中区| 恩施市| 海宁市| 邢台县| 汝州市| 内丘县| 织金县| 泊头市| 保德县| 新乡县| 论坛| 洪江市| 延长县| 弥勒县| 邢台县| 漳平市| 玉林市| 乡城县| 石柱| 青浦区| 苍山县| 天全县| 澄迈县| 珲春市|