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

Nodejs中怎么實(shí)現(xiàn)函數(shù)的串行執(zhí)行

 更新時(shí)間:2019年03月02日 11:27:51   作者:編碼的哲哲  
今天小編就為大家分享一篇關(guān)于Nodejs中怎么實(shí)現(xiàn)函數(shù)的串行執(zhí)行,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

nodejs實(shí)現(xiàn)函數(shù)串行執(zhí)行

眾所周知,nodejs是用非阻塞異步io機(jī)制,也就是說函數(shù)執(zhí)行完成的先后順序和代碼的編寫的先后順序可能不同,實(shí)際的順序取決于一個(gè)函數(shù)自身執(zhí)行的快慢。這就出現(xiàn)一個(gè)在nodejs中怎么編寫串行執(zhí)行也就是順序執(zhí)行代碼的問題。試想,要是你寫了2個(gè)函數(shù),一個(gè)查詢數(shù)據(jù)庫,另一個(gè)返回查詢的結(jié)果,要是不用串行執(zhí)行那么還沒等數(shù)據(jù)庫查詢完畢就返回了結(jié)果,這顯然是不行的。因而串行執(zhí)行在nodejs中很有用。那么怎么實(shí)現(xiàn)呢?

大家可能會說,將返回查詢結(jié)果的函數(shù)寫在查詢數(shù)據(jù)庫函數(shù)的回調(diào)函數(shù)里面就好了呀,但是有過開發(fā)經(jīng)驗(yàn)的朋友一定知道,要是情況比較復(fù)雜時(shí)就會產(chǎn)生一個(gè)回調(diào)地獄的問題,即層層嵌套,最后都不知道自己寫了些什么,可讀性和維護(hù)性很差。

我們不防換個(gè)思路,要是將這些想要順序執(zhí)行的函數(shù)放到一個(gè)數(shù)組里面,當(dāng)一個(gè)函數(shù)執(zhí)行完畢時(shí)在執(zhí)行數(shù)組里面的下一個(gè)函數(shù)不就行了嘛。其實(shí),nodejs開源社區(qū)中的很多串行模塊的基本思想就是這個(gè)。接下來我們一步一步完成這個(gè)串行的demo:

1.首先我們定義一個(gè)保存函數(shù)執(zhí)行順序的數(shù)值:

var tasks = [];

2.再定義一個(gè)往數(shù)值里面加入串行化執(zhí)行函數(shù)的函數(shù):

function addTask(task){
     tasks.push(task);
}

3.執(zhí)行數(shù)組中下一個(gè)函數(shù)的函數(shù):

function next(){
     if(tasks.length > 0){
        tasks.shift()();
     }else{
       return;   
     }
}

ok,大功告成,接下來定義幾個(gè)測試函數(shù):

var task1 = function(){
     console.log('task1 is finished');
     next();
}
var task2 = function(){
     console.log('task2 is finished');
     next();}var task3 = function(){
     console.log('task3 is finished');
     next();
}

開始測試:

addTask(task1);
addTask(task2);
addTask(task3);
next()

換個(gè)順序:

addTask(task1);
addTask(task3);
addTask(task2);
next();

ok,大功告成?;谶@個(gè)思想,在實(shí)際開發(fā)中大家可以定義一個(gè)模塊,將這個(gè)串行打包,再也不用害怕回調(diào)地獄問題啦。

還可以用第三方庫,如async.

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Node環(huán)境中JS代碼缺少window對象的原因和解決方案

    Node環(huán)境中JS代碼缺少window對象的原因和解決方案

    你可能會在某些情況下需要在Node環(huán)境下運(yùn)行JavaScript代碼,但你也可能會遇到一個(gè)常見的問題:缺少window環(huán)境,在本文中,我們將深入探討這個(gè)問題的原因,并提供解決方案,需要的朋友可以參考下
    2023-08-08
  • Nodejs使用Mongodb存儲與提供后端CRD服務(wù)詳解

    Nodejs使用Mongodb存儲與提供后端CRD服務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于Nodejs使用Mongodb存儲與提供后端CRD服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 淺談Node.js爬蟲之網(wǎng)頁請求模塊

    淺談Node.js爬蟲之網(wǎng)頁請求模塊

    本篇文章主要介紹了淺談Node.js爬蟲之網(wǎng)頁請求模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Node的事件處理和readline模塊詳解

    Node的事件處理和readline模塊詳解

    這篇文章主要為大家詳細(xì)介紹了Node的事件處理和readline模塊,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • nodejs解析xml文件方式(xml->json)

    nodejs解析xml文件方式(xml->json)

    這篇文章主要介紹了nodejs解析xml文件方式(xml->json),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Nodejs腳本快速導(dǎo)出MySQL數(shù)據(jù)庫數(shù)據(jù)

    Nodejs腳本快速導(dǎo)出MySQL數(shù)據(jù)庫數(shù)據(jù)

    在數(shù)據(jù)庫管理和數(shù)據(jù)遷移的過程中,常常需要將數(shù)據(jù)庫中的表數(shù)據(jù)和結(jié)構(gòu)進(jìn)行導(dǎo)出,本文將使用Node.js編寫一個(gè)腳本實(shí)現(xiàn)快速從MySQL數(shù)據(jù)庫中導(dǎo)出所有表的數(shù)據(jù)和結(jié)構(gòu),并保存為單獨(dú)的SQL文件,需要的可以參考下
    2024-10-10
  • npm dose not support Node.js v10.15.3的解決方法

    npm dose not support Node.js v10.15

    這篇文章主要給大家介紹了關(guān)npm dose not support Node.js v10.15.3的解決方法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • node.js微信公眾平臺開發(fā)教程

    node.js微信公眾平臺開發(fā)教程

    這篇文章主要為大家分享了node.js微信公眾平臺開發(fā)教程,如何進(jìn)行微信開發(fā),感興趣的小伙伴們可以參考一下
    2016-03-03
  • node+express+axios實(shí)現(xiàn)單文件上傳功能

    node+express+axios實(shí)現(xiàn)單文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了node+express+axios實(shí)現(xiàn)單文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Node.js+express+socket實(shí)現(xiàn)在線實(shí)時(shí)多人聊天室

    Node.js+express+socket實(shí)現(xiàn)在線實(shí)時(shí)多人聊天室

    這篇文章主要為大家詳細(xì)介紹了Node.js+express+socket實(shí)現(xiàn)在線實(shí)時(shí)多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

德格县| 永济市| 新巴尔虎左旗| 东港市| 泾川县| 新化县| 宜城市| 天镇县| 靖州| 上蔡县| 安泽县| 芷江| 浙江省| 黄大仙区| 潜江市| 韩城市| 滁州市| 济阳县| 江门市| 水城县| 巴林右旗| 临夏县| 三河市| 霍山县| 睢宁县| 耿马| 图片| 桃园县| 西昌市| 清水县| 彭阳县| 东丰县| 吉隆县| 任丘市| 南涧| 肥西县| 宁海县| 芮城县| 江陵县| 台江县| 滨州市|