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

Javascript中的async函數(shù)詳解

 更新時(shí)間:2022年03月03日 15:03:36   作者:前端e站  
這篇文章主要為大家詳細(xì)介紹了Javascript中的async函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

前言:async 是“異步”的簡(jiǎn)寫,async 用于申明一個(gè) function 是異步的,而 await 用于等待一個(gè)異步方法執(zhí)行完成,await 只能出現(xiàn)在 async 函數(shù)中。

Generator 函數(shù):

var fs = require('fs');
var readFile = function (fileName){
 return new Promise(function (resolve, reject){
 fs.readFile(fileName, function(error, data){
 if (error) reject(error);
 resolve(data);
 });
 });
};
var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
}

async 函數(shù)

var asyncReadFile = async function (){
  var f1 = await readFile('/etc/fstab');
  var f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

顯而易見,async函數(shù)中async就是將 Generator 函數(shù)的星號(hào)(*)替換成 async,await等價(jià)于yield。

async 函數(shù)是非常新的語法功能,屬于 ES7。目前,它仍處于提案階段,但是轉(zhuǎn)碼器 Babel 和 regenerator 都已經(jīng)支持,轉(zhuǎn)碼后就能使用。

但async 函數(shù)對(duì) Generator 函數(shù)做了改進(jìn):

1、內(nèi)置執(zhí)行器:Generator函數(shù)的執(zhí)行必須靠執(zhí)行器,所以才有了 co 函數(shù)庫,而 async 函數(shù)自帶執(zhí)行器.也就是說,async 函數(shù)的執(zhí)行,與普通函數(shù)一模一樣。

var result = asyncReadFile();

2、更好的語義:async 和 await,比起星號(hào)和 yield,語義更清楚了。async 表示函數(shù)里有異步操作,await 表示緊跟在后面的表達(dá)式需要等待結(jié)果。

3、更廣的適用性:co 函數(shù)庫約定,yield 命令后面只能是 Thunk 函數(shù)或 Promise 對(duì)象,而 async 函數(shù)的 await 命令后面,可以跟 Promise 對(duì)象和原始類型的值(數(shù)值、字符串和布爾值,但這時(shí)等同于同步操作)。

async 的作用

async 函數(shù)負(fù)責(zé)返回一個(gè) Promise 對(duì)象,如果在async函數(shù)中 return 一個(gè)直接量,async 會(huì)把這個(gè)直接量通過Promise.resolve()  封裝成 Promise 對(duì)象;如果 async 函數(shù)沒有返回值,它會(huì)返回 Promise.resolve(undefined)。

await 在等待什么

如果await等到的不是一個(gè)promise對(duì)象,那跟著的表達(dá)式的運(yùn)算結(jié)果就是它等到的東西;

如果是一個(gè)promise對(duì)象,await會(huì)阻塞后面的代碼,等promise對(duì)象resolve,得到resolve的值作為await表達(dá)式的運(yùn)算結(jié)果。

雖然await阻塞了,但await在async中,async不會(huì)阻塞,它內(nèi)部所有的阻塞都被封裝在一個(gè)promise對(duì)象中異步執(zhí)行。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!    

相關(guān)文章

  • javascript的propertyIsEnumerable()方法使用介紹

    javascript的propertyIsEnumerable()方法使用介紹

    propertyIsEnumerable()是用來檢測(cè)屬性是否屬于某個(gè)對(duì)象的,如果檢測(cè)到了,返回true,否則返回false,下面為大家介紹下其具體的使用
    2014-04-04
  • Javascript數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列詳解

    Javascript數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列詳解

    要了解JavaScript數(shù)組的堆棧和隊(duì)列方法的操作,需要先對(duì)堆棧和隊(duì)列基礎(chǔ)知識(shí)有所了解,下面這篇文章主要給大家介紹了關(guān)于Javascript數(shù)據(jù)結(jié)構(gòu)之棧和隊(duì)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • JavaScript添加隨滾動(dòng)條滾動(dòng)窗體的方法

    JavaScript添加隨滾動(dòng)條滾動(dòng)窗體的方法

    這篇文章主要介紹了JavaScript添加隨滾動(dòng)條滾動(dòng)窗體的方法,涉及JavaScript事件響應(yīng)及頁面元素動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • 淺談JavaScript find 方法不支持IE的問題

    淺談JavaScript find 方法不支持IE的問題

    下面小編就為大家?guī)硪黄獪\談JavaScript find 方法不支持IE的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行

    javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行

    在某些時(shí)候需要?jiǎng)討B(tài)加載表格與動(dòng)態(tài)添加表格行,在接下來的文章中將為大家介紹下javascript是如何做到的,感興趣的朋友不要錯(cuò)過
    2013-11-11
  • layer彈窗插件操作方法詳解

    layer彈窗插件操作方法詳解

    這篇文章主要介紹了layer彈窗插件操作方法,結(jié)合實(shí)例形式詳細(xì)分析了layer彈窗插件的下載、調(diào)用、設(shè)置等具體步驟與操作技巧,需要的朋友可以參考下
    2017-05-05
  • undefined與null的區(qū)別示例詳解

    undefined與null的區(qū)別示例詳解

    這篇文章主要為大家介紹了undefined與null的區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 學(xué)習(xí)使用bootstrap基本控件(table、form、button)

    學(xué)習(xí)使用bootstrap基本控件(table、form、button)

    這篇文章主要教會(huì)大家學(xué)習(xí)使用bootstrap基本控件,如table、form、button控件,感興趣的小伙伴們可以參考一下
    2016-04-04
  • js實(shí)現(xiàn)五星評(píng)價(jià)功能

    js實(shí)現(xiàn)五星評(píng)價(jià)功能

    本文主要介紹了js實(shí)現(xiàn)五星評(píng)價(jià)功能和印象評(píng)價(jià)功能的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • IE6圖片加載的一個(gè)BUG解決方法

    IE6圖片加載的一個(gè)BUG解決方法

    小圖整合在一張大圖里,然后在不同的CSS里調(diào)用同一張圖片,以此來減少請(qǐng)求數(shù),這是頁面優(yōu)化最常用的手段,但I(xiàn)E6會(huì)對(duì)頁面里同一個(gè)圖片,只要在不同的地方有引用到就會(huì)重新請(qǐng)求一次,需要加JS代碼解決。
    2010-07-07

最新評(píng)論

吉水县| 乐清市| 高碑店市| 红桥区| 湘潭县| 密山市| 永登县| 满洲里市| 岚皋县| 佛教| 砀山县| 海淀区| 青冈县| 南开区| 正定县| 丘北县| 永昌县| 静宁县| 西宁市| 巴中市| 苍南县| 鄯善县| 西乌| 山阴县| 横峰县| 施秉县| 利川市| 文登市| 甘谷县| 新泰市| 昭平县| 马边| 平陆县| 金门县| 许昌县| 同仁县| 同心县| 育儿| 南宫市| 泗水县| 绩溪县|