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

node異步使用await和不用await的區(qū)別實(shí)例分析

 更新時(shí)間:2023年06月08日 09:54:10   作者:foreverling_ling  
這篇文章主要介紹了node異步使用await和不用await的區(qū)別,結(jié)合實(shí)例形式分析了node.js異步使用await和不用await的實(shí)例中,同步與異步執(zhí)行的區(qū)別,需要的朋友可以參考下

最近在用node寫項(xiàng)目。新版node異步用的是async/await這兩個(gè)關(guān)鍵字。我們都知道,一般這兩個(gè)關(guān)鍵字要成對(duì)出現(xiàn)。但是,筆者發(fā)現(xiàn),如果不需要等待返回值的話,await可以不加。那么await加和不加有什么區(qū)別呢?百度以及google了大量資料,結(jié)合評(píng)論,最終在實(shí)踐中弄明白了。下面直接上例子。

不加await

async test(ctx,next){
? ? this.doThing().then(console.log('done Thing'))
? ? this.doAnotherThing();
? ? console.log('this way');
? }
? async doThing() {
? ? this.doA();
? ? this.doB();
? }
? doAnotherThing() {
? ? console.log('do another thing')
? }
? async doA() {
? ? return new Promise(resove => {
? ? ? setTimeout(() => {
? ? ? ? console.log('done A')
? ? ? ? resove()
? ? ? }, 1000)
? ? })
? }
? async doB() {
? ? return new Promise(resove => {
? ? ? setTimeout(() => {
? ? ? ? console.log('done B')
? ? ? ? resove()
? ? ? }, 100)
? ? })
? }

運(yùn)行test函數(shù)以后,命令行迅速依次打印了如下結(jié)果

我們看到,沒有加await,異步函數(shù)A,B順序執(zhí)行,由于A運(yùn)行時(shí)間較長,所以B先執(zhí)行完成,整個(gè)過程沒有阻塞。

加await

async test(ctx,next){
? ? this.doThing().then(console.log('done Thing'))
? ? this.doAnotherThing();
? ? console.log('this way');
? }
? async doThing() {
? ? await this.doA()
? ? await this.doB()
? }
? doAnotherThing() {
? ? console.log('do another thing')
? }
? async doA() {
? ? return new Promise(resove => {
? ? ? setTimeout(() => {
? ? ? ? console.log('done A')
? ? ? ? resove()
? ? ? }, 1000)
? ? })
? }
? async doB() {
? ? return new Promise(resove => {
? ? ? setTimeout(() => {
? ? ? ? console.log('done B')
? ? ? ? resove()
? ? ? }, 100)
? ? })
? }

運(yùn)行結(jié)果如下 :

由于加了await,所以要等待異步事件A先完成,然后才會(huì)進(jìn)行事件B。也就是await不會(huì)阻塞同步事件的運(yùn)行,但是異步卻是一個(gè)一個(gè)執(zhí)行的,其中一個(gè)阻塞,下一個(gè)異步事件就無法繼續(xù)。

由于node.js異步事件執(zhí)行機(jī)制,各個(gè)事件的執(zhí)行順序帶有不確定性。因此,對(duì)于需要對(duì)執(zhí)行順序有要求的事件就需要謹(jǐn)慎使用同步與異步事件。

相關(guān)文章

  • 在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能

    在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能

    在現(xiàn)代Web應(yīng)用中,視頻內(nèi)容和互動(dòng)功能(如評(píng)論)的結(jié)合極大地增加了用戶的參與度,本文將通過一個(gè)具體的例子,展示如何在Node.js環(huán)境中使用Express框架來實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能,需要的朋友可以參考下
    2024-04-04
  • 前端pnpm?workspace架構(gòu)實(shí)例詳解

    前端pnpm?workspace架構(gòu)實(shí)例詳解

    pnpm作為新一代包管理工具,解決了npm和yarn在依賴管理中的效率問題,它采用獨(dú)特的網(wǎng)狀+平鋪結(jié)構(gòu),顯著提升安裝速度并優(yōu)化磁盤空間,這篇文章主要介紹了前端pnpm?workspace架構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • nodejs 實(shí)現(xiàn)釘釘ISV接入的加密解密方法

    nodejs 實(shí)現(xiàn)釘釘ISV接入的加密解密方法

    這篇文章主要介紹了nodejs 實(shí)現(xiàn)釘釘ISV接入的加密解密方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧,需要的朋友可以參考下
    2017-01-01
  • 卸載安裝Node.js與npm過程詳解

    卸載安裝Node.js與npm過程詳解

    這篇文章是根據(jù)自己的經(jīng)驗(yàn)及實(shí)際操作介紹nodejs和npm的卸載及安裝,相信對(duì)很多人會(huì)有幫助,有需要的可以參考學(xué)習(xí)。
    2016-08-08
  • 手寫Node靜態(tài)資源服務(wù)器的實(shí)現(xiàn)方法

    手寫Node靜態(tài)資源服務(wù)器的實(shí)現(xiàn)方法

    這篇文章主要介紹了手寫Node靜態(tài)資源服務(wù)器的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Nodejs 構(gòu)建Cluster集群多線程Worker threads

    Nodejs 構(gòu)建Cluster集群多線程Worker threads

    這篇文章主要為大家介紹了Nodejs 構(gòu)建Cluster集群多線程Worker threads示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • nodejs?express實(shí)現(xiàn)中間件

    nodejs?express實(shí)現(xiàn)中間件

    這篇文章主要為大家介紹了nodejs?express實(shí)現(xiàn)中間件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • node中Stream流的詳細(xì)介紹

    node中Stream流的詳細(xì)介紹

    這篇文章主要介紹了node中Stream的詳細(xì)介紹,流是一個(gè)數(shù)據(jù)傳輸手段,是端到端信息交換的一種方式,而且是有順序的,是逐塊讀取數(shù)據(jù)、處理內(nèi)容,用于順序讀取輸入或?qū)懭胼敵?/div> 2022-09-09
  • 詳解利用 Express 托管靜態(tài)文件的方法

    詳解利用 Express 托管靜態(tài)文件的方法

    本篇文章主要介紹了詳解利用 Express 托管靜態(tài)文件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼

    用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼

    本篇文章主要介紹了用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07

最新評(píng)論

延安市| 利川市| 灌阳县| 铜鼓县| 高雄市| 富阳市| 祥云县| 山东| 永泰县| 安岳县| 吴堡县| 射阳县| 郧西县| 兴义市| 丰都县| 万宁市| 聂拉木县| 靖江市| 溧阳市| 兴化市| 张家口市| 龙江县| 新昌县| 时尚| 扬中市| 囊谦县| 潮州市| 新昌县| 固原市| 广安市| 临清市| 临潭县| 石首市| 蒲城县| 哈尔滨市| 长子县| 南溪县| 绥芬河市| 黔西| 舒兰市| 汝阳县|