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

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

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

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

不加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)
? ? })
? }

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

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

加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)
? ? })
? }

運行結(jié)果如下 :

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    node中Stream流的詳細介紹

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

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

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

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

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

最新評論

西城区| 阿合奇县| 荥阳市| 谢通门县| 朔州市| 渭源县| 商城县| 屯门区| 河源市| 宁波市| 穆棱市| 汝阳县| 南部县| 泸溪县| 平江县| 长寿区| 桑日县| 兴文县| 葫芦岛市| 无极县| 十堰市| 灌阳县| 修水县| 都安| 乐都县| 广元市| 莲花县| 阳西县| 涿鹿县| 大邑县| 漾濞| 西乌| 盐池县| 科技| 汝城县| 合川市| 永春县| 来凤县| 铜川市| 怀柔区| 延寿县|