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

Node.js入門筆記?之a(chǎn)sync模塊

 更新時(shí)間:2022年06月21日 10:26:39   作者:??一只大加號(hào)????  
這篇文章主要介紹了Node.js入門筆記?之a(chǎn)sync模塊,async是一個(gè)異步處理模塊,主要有三個(gè)方式:串行無關(guān)聯(lián)、并行無關(guān)聯(lián)?、串行有關(guān)聯(lián),文章圍繞主題展開更多的相關(guān)內(nèi)容,需要的小伙伴可以參考一下

前言

前面我們介紹了異步模塊的CPS解決嵌套回調(diào)的方法,但是隨著業(yè)務(wù)的推進(jìn),node的更新方法也越來越快,對(duì)于異步的處理會(huì)有更多的新的方法來解決,最常見的當(dāng)然是async模塊來解決異步請(qǐng)求,這一節(jié)就來記錄一下async模塊的應(yīng)用,對(duì)異步的處理更進(jìn)一步臺(tái)階

async

async不同于ES2017的新特性,這里的async表示的是node的第三方模塊,也是一個(gè)比較出名的第三方模塊,為了解決異步嵌套的回調(diào)地獄的問題,我們可以根據(jù)不同的業(yè)務(wù)場(chǎng)景來使用不同的方法,如常見的series、map、parallel,我們來看一下各個(gè)方法是如何使用的

series

const async = require('async');
const fs = require('fs');
function read_a(callback){
    fs.readFile("./async/a.txt",function(err,data){
        if(err){
            callback(err);
        }else{
            callback(null,data);
        }
    })
}
function read_b(callback){
    fs.readFile("./async/b.txt",function(err,data){
        if(err){
            callback(err);
        }else{
            callback(null,data);
        }
    })
}
function read_c(callback){
    fs.readFile("./async/c.txt",function(err,data){
        if(err){
            callback(err);
        }else{
            callback(null,data);
        }
    })
}
async.series([read_a,read_b,read_c],function(err,data){
    console.log(data.toString);//aaa,bbb,ccc
})

series接受數(shù)組和回調(diào)函數(shù),將異步方法放到一個(gè)數(shù)組中,回調(diào)函數(shù)會(huì)將全部的異步操作結(jié)果返回,順序和數(shù)組中的順序是一致的,series只是嵌套回調(diào)的語(yǔ)法糖,即執(zhí)行一個(gè)操作再進(jìn)行下一個(gè)操作,打印的結(jié)果是aaa,bbb,ccc

由于async是第三方模塊,所以在使用async的時(shí)候也需要像引入fs一樣將async模塊引入

如果引入之后會(huì)發(fā)出一下報(bào)錯(cuò),我們可以在終端運(yùn)行一下npm install async 再重新安裝一下,這里我已經(jīng)親測(cè)并且解決了。

parallel

parallel 的調(diào)用也是會(huì)按照順序返回結(jié)果,但是與其他方法不同的是異步方法中執(zhí)行步驟是并行執(zhí)行的,執(zhí)行的時(shí)間油耗時(shí)最長(zhǎng)的決定,parallel的結(jié)果是由所有異步操作完成之后組裝成順序的結(jié)果返回出來

waterfall

waterfall可以用來處理多個(gè)連續(xù)的回調(diào):

const async = require('async');
const fs = require('fs');
function read_a(callback){
    fs.readFile("./async/a.txt",callback) 
}
function read_b(value,callback){
    console.log('last_value',value.toString());
    fs.readFile("./async/b.txt",callback)
}
function read_c(value,callback){
    console.log('last_value',value.toString());
    fs.readFile("./async/c.txt",callback)
}
async.waterfall([read_a,read_b,read_c],function(err,data){
    console.log(data.toString());
    //last_value aaa
    //last_value bbb
    //ccc
})

我們分別調(diào)用了abc三個(gè)文件,三個(gè)文件的結(jié)果都在第二個(gè)異步中返回出來,這個(gè)方法運(yùn)用起來更像是回調(diào)的嵌套使用。

map

對(duì)于上面幾個(gè)方法中將方法合并成一個(gè)數(shù)據(jù),map的方法比較特別,接收的一個(gè)數(shù)組是按照參數(shù)合并的,map接收三個(gè)參數(shù),分別是數(shù)組,異步方法,回調(diào)

如果想簡(jiǎn)單的使用map方法,那么將不需要做額外的封裝,可以直接使用readFile方法

let arr = ['./async/a.txt','./async/b.txt','./async/c.txt']
async.map(arr,fs.readFile,function(err,results){
   console.log(results);
})

如果對(duì)異步方法想要傳參使用的話,可以對(duì)異步方法來進(jìn)行一個(gè)簡(jiǎn)單的封裝:

const async = require('async');
const fs = require('fs');
function read(path,callBack){
    fs.readFile(path,"utf-8",callBack)
}
let arr = ['./async/a.txt','./async/b.txt','./async/c.txt']
async.map(arr,read,function(err,results){
   console.log(results);//[ 'aaa', 'bbb', 'ccc' ]
})

async并不是使用所有場(chǎng)合,可以明顯的看出,如果現(xiàn)在需要在上一個(gè)方法的結(jié)果來確定是否調(diào)用下一個(gè)異步方法,這個(gè)方法就顯得很不適用,下一節(jié)再來介紹一下Promise的使用。

到此這篇關(guān)于Node.js入門筆記 之a(chǎn)sync模塊的文章就介紹到這了,更多相關(guān)Node.js async 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nodejs如何將高版本降為低版本

    nodejs如何將高版本降為低版本

    在遇到項(xiàng)目依賴低版本Node.js時(shí),直接安裝低版本可能會(huì)遇到困難,本文提供了一種通過卸載當(dāng)前高版本Node.js并使用NVM(Node Version Manager)來管理和安裝低版本Node.js的方法,首先,需要卸載現(xiàn)有的Node.js環(huán)境并清理相關(guān)文件
    2024-10-10
  • Node.js高級(jí)編程使用RPC通信示例詳解

    Node.js高級(jí)編程使用RPC通信示例詳解

    這篇文章主要為大家介紹了Node.js高級(jí)編程使用RPC通信示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Node.js之構(gòu)建WebSocket服務(wù)全過程

    Node.js之構(gòu)建WebSocket服務(wù)全過程

    這篇文章主要介紹了Node.js之構(gòu)建WebSocket服務(wù)全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • node獲取客戶端ip功能簡(jiǎn)單示例

    node獲取客戶端ip功能簡(jiǎn)單示例

    這篇文章主要介紹了node獲取客戶端ip功能,結(jié)合實(shí)例形式分析了node.js獲取客戶端IP地址的原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-08-08
  • 基于websocket實(shí)現(xiàn)簡(jiǎn)單聊天室對(duì)話

    基于websocket實(shí)現(xiàn)簡(jiǎn)單聊天室對(duì)話

    這篇文章主要為大家詳細(xì)介紹了基于websocket實(shí)現(xiàn)簡(jiǎn)單聊天室對(duì)話,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Node批量爬取頭條視頻并保存方法

    Node批量爬取頭條視頻并保存方法

    在本篇文章中我們給大家介紹了node爬取頭條里面的視頻,并進(jìn)行批量保存的方法,有需要的朋友可以測(cè)試以下。
    2018-09-09
  • node實(shí)現(xiàn)將json轉(zhuǎn)為excel

    node實(shí)現(xiàn)將json轉(zhuǎn)為excel

    平時(shí)我們寫代碼處理的數(shù)據(jù)格式一般都是json格式的數(shù)據(jù),但有時(shí)候我們也需要將數(shù)據(jù)轉(zhuǎn)為excel格式進(jìn)行保存或分享,所以下面我們就來學(xué)習(xí)一下如何通過node實(shí)現(xiàn)json轉(zhuǎn)excel吧
    2024-11-11
  • 如何用nvm管理眾多nodejs版本詳細(xì)教程

    如何用nvm管理眾多nodejs版本詳細(xì)教程

    NVM是一個(gè)nodejs的版本管理工具,nvm和n都是node.js版本管理工具,為了解決node.js各種版本存在不兼容現(xiàn)象可以通過它可以安裝和切換不同版本的 node.js,這篇文章主要介紹了如何用nvm管理眾多nodejs版本的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • node.js讀取命令行參數(shù)詳解

    node.js讀取命令行參數(shù)詳解

    本文主要講解了node.js如何獲取命令行參數(shù),有需要的朋友可以參考下
    2022-10-10
  • node?NPM庫(kù)qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學(xué)習(xí)

    node?NPM庫(kù)qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學(xué)習(xí)

    這篇文章主要為大家介紹了node?NPM庫(kù)之qs解析URL查詢字符串及iconv-lite字符串編碼轉(zhuǎn)換學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論

永寿县| 鄂托克前旗| 凤翔县| 墨脱县| 安仁县| 台前县| 阿勒泰市| 泸定县| 石家庄市| 腾冲县| 衡阳县| 焉耆| 水城县| 丰宁| 保靖县| 高邑县| 大理市| 博白县| 灵武市| 肥西县| 临洮县| 新闻| 汝阳县| 张掖市| 唐山市| 信丰县| 博野县| 咸阳市| 南充市| 西平县| 疏附县| 汝阳县| 错那县| 黎城县| 英吉沙县| 广河县| 成都市| 岚皋县| 中阳县| 新野县| 河西区|