欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

async

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

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ù),將異步方法放到一個數(shù)組中,回調(diào)函數(shù)會將全部的異步操作結(jié)果返回,順序和數(shù)組中的順序是一致的,series只是嵌套回調(diào)的語法糖,即執(zhí)行一個操作再進行下一個操作,打印的結(jié)果是aaa,bbb,ccc

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

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

parallel

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

waterfall

waterfall可以用來處理多個連續(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三個文件,三個文件的結(jié)果都在第二個異步中返回出來,這個方法運用起來更像是回調(diào)的嵌套使用。

map

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

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

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

如果對異步方法想要傳參使用的話,可以對異步方法來進行一個簡單的封裝:

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

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

相關(guān)文章

  • 配置Node.js環(huán)境變量詳細圖文教程

    配置Node.js環(huán)境變量詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于配置Node.js環(huán)境變量詳細圖文教程的相關(guān)資料,在Node.js中設(shè)置環(huán)境變量非常簡單,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • nodejs 日志模塊winston的使用方法

    nodejs 日志模塊winston的使用方法

    本篇文章主要介紹了nodejs 日志模塊winston的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Wondows下Node.js使用MongoDB的環(huán)境配置

    詳解Wondows下Node.js使用MongoDB的環(huán)境配置

    這篇文章主要介紹了詳解Wondows下Node.js使用MongoDB的環(huán)境配置,這里使用到了Mongoose驅(qū)動來讓JavaScript操作MongoDB,需要的朋友可以參考下
    2016-03-03
  • node+vue實現(xiàn)文件上傳功能

    node+vue實現(xiàn)文件上傳功能

    這篇文章主要介紹了node+vue實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Node.js+ELK日志規(guī)范的實現(xiàn)

    Node.js+ELK日志規(guī)范的實現(xiàn)

    這篇文章主要介紹了Node.js+ELK日志規(guī)范的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Node.js成為Web應(yīng)用開發(fā)最佳選擇的原因

    Node.js成為Web應(yīng)用開發(fā)最佳選擇的原因

    本篇文章給大家詳細分析了Node.js 成為 Web 應(yīng)用開發(fā)最佳選擇的十個原因,對此有需要的朋友參考下。
    2018-02-02
  • Nodejs回調(diào)加超時限制兩種實現(xiàn)方法

    Nodejs回調(diào)加超時限制兩種實現(xiàn)方法

    這篇文章主要介紹了Nodejs回調(diào)加超時限制兩種實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 關(guān)于express與koa的使用對比詳解

    關(guān)于express與koa的使用對比詳解

    很多人都在問到底該用Koa還是express,所以下面這篇文章就來給大家再次的對比了關(guān)于express與koa的相關(guān)資料,通過對比大家可以更好的進行選擇,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-01-01
  • nodeJS中關(guān)于path.resolve()的用法解析

    nodeJS中關(guān)于path.resolve()的用法解析

    這篇文章主要介紹了nodeJS中關(guān)于path.resolve()的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Node.js Continuation Passing Style( CPS與回調(diào))

    Node.js Continuation Passing Style( CPS與

    這篇文章主要介紹了Node.js Continuation Passing Style,將回調(diào)函數(shù)作為參數(shù)傳遞,這種書寫方式通常被稱為Continuation Passing Style(CPS),它的本質(zhì)仍然是一個高階函數(shù),CPS最初是各大語言中對排序算法的實現(xiàn)
    2022-06-06

最新評論