返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node.js入门笔记 之async模块
  • 967
分享到

Node.js入门笔记 之async模块

2024-04-02 19:04:59 967人浏览 薄情痞子
摘要

目录前言asyncseriesparallelwaterfallmap前言 前面我们介绍了异步模块的CPS解决嵌套回调的方法,但是随着业务的推进,node的更新方法也越来越快,对于异

前言

前面我们介绍了异步模块的CPS解决嵌套回调的方法,但是随着业务的推进,node的更新方法也越来越快,对于异步的处理会有更多的新的方法来解决,最常见的当然是async模块来解决异步请求,这一节就来记录一下async模块的应用,对异步的处理更进一步台阶

async

async不同于ES2017的新特性,这里的async表示的是node的第三方模块,也是一个比较出名的第三方模块,为了解决异步嵌套的回调地狱的问题,我们可以根据不同的业务场景来使用不同的方法,如常见的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接受数组和回调函数,将异步方法放到一个数组中,回调函数会将全部的异步操作结果返回,顺序和数组中的顺序是一致的,series只是嵌套回调的语法糖,即执行一个操作再进行下一个操作,打印的结果是aaa,bbb,ccc

由于async是第三方模块,所以在使用async的时候也需要像引入fs一样将async模块引入

如果引入之后会发出一下报错,我们可以在终端运行一下npm install async 再重新安装一下,这里我已经亲测并且解决了。

parallel

parallel 的调用也是会按照顺序返回结果,但是与其他方法不同的是异步方法中执行步骤是并行执行的,执行的时间油耗时最长的决定,parallel的结果是由所有异步操作完成之后组装成顺序的结果返回出来

waterfall

waterfall可以用来处理多个连续的回调:

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

我们分别调用了abc三个文件,三个文件的结果都在第二个异步中返回出来,这个方法运用起来更像是回调的嵌套使用。

map

对于上面几个方法中将方法合并成一个数据,map的方法比较特别,接收的一个数组是按照参数合并的,map接收三个参数,分别是数组,异步方法,回调

如果想简单的使用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并不是使用所有场合,可以明显的看出,如果现在需要在上一个方法的结果来确定是否调用下一个异步方法,这个方法就显得很不适用,下一节再来介绍一下Promise的使用。

到此这篇关于node.js入门笔记 之async模块的文章就介绍到这了,更多相关Node.js async 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Node.js入门笔记 之async模块

本文链接: https://lsjlt.com/news/152101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js入门笔记 之async模块
    目录前言asyncseriesparallelwaterfallmap前言 前面我们介绍了异步模块的CPS解决嵌套回调的方法,但是随着业务的推进,node的更新方法也越来越快,对于异...
    99+
    2024-04-02
  • node.js入门学习之url模块
    前言 今天主要记录的是关于node.js里面的一个简单的模块,url模块。这个url的模块要使用的话需要先引入。若只是在命令行里比如cmd或git bash 等使用url这个模块的话,是不需要require...
    99+
    2022-06-04
    模块 入门 node
  • Node.js基础入门之path模块,url模块,http模块使用详解
    目录path模块1. path模块示例2. path模块其他方法url模块1. 旧的解析方法2. 新的解析方法http模块1. 什么是HTTP协议?2. HTTP协议约束的细节3. ...
    99+
    2024-04-02
  • node.js入门教程之querystring模块的使用方法
    querystring模块 querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。 这4个方法...
    99+
    2022-06-04
    使用方法 模块 入门教程
  • Node.js中的模块机制学习笔记
    Javascript自诞生以来,曾经没有人拿它当做一门编程语言。在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效。直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被...
    99+
    2022-06-04
    学习笔记 模块 机制
  • Python学习笔记之json模块和pickle模块
    目录json模块序列化与反序列化json模块中的方法pickle模块总结json模块 json用于不同语言之间的数据交换,比如C和Python之间等等,即可跨语言。而pickle只能...
    99+
    2023-05-18
    json模块 pickle模块 python各个模块讲解
  • Nodejs学习笔记之Stream模块
    一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现。比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流。流是可读,可写或兼具两者的。 最早接触Stream是从早期的unix开...
    99+
    2022-06-04
    学习笔记 模块 Nodejs
  • Nodejs学习笔记之NET模块
    一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将No...
    99+
    2022-06-04
    学习笔记 模块 Nodejs
  • NodeJS学习笔记之Http模块
    一,开篇分析 首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的, NodeJS作为一个宿主运行环境,以Jav...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • NodeJS学习笔记之MongoDB模块
    一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块)。 (1),简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WE...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • Nodejs学习笔记之入门篇
    分享第一篇,关于 NodeJS —— Javascript 的常用知识以及如何从 Javascript 开发者过渡到 NodeJS 开发者(不会介绍具体的框架)。在读本文前,希望你对 javascript ...
    99+
    2022-06-04
    学习笔记 入门篇 Nodejs
  • Python入门之模块与包
    模块指的是Python的程序文件(源文件),模块的文件名就是模块名加上.py,里面包含了Python对象定义和Python语句,模块包含了定义函数、类和执行代码等等。模块提高了代码的...
    99+
    2024-04-02
  • 深入理解node.js之path模块
    node之path模块 //引用该模块 var path = require("path"); 1、路径解析,得到规范化的路径格式 //对window系统,目录分隔为'', 对于UNIX系统,分隔...
    99+
    2022-06-04
    模块 node js
  • Cypher 入门笔记
    Neo4j使用Cypher查询图形数据,Cypher是描述性的图形查询语言,语法简单,功能强大,由于Neo4j在图形数据库家族中处于绝对领先的地位,拥有众多的用户基数,使得Cypher成为图形查询语言的事...
    99+
    2016-11-27
    Cypher 入门笔记
  • linux入门笔记
    学习linux也不是那么难,首先你就必须掌握这些入门知识,这样才能让你从新手变老手,下面就从几个方面来教你学linux。【1】Linux介绍【2】vi编辑器(1)三种模式:(2)vi命令【1】Linux介绍(1)四个重要的人物肯.汤姆森 B...
    99+
    2023-06-05
  • Node.js基础入门之使用方式及模块化详解
    目录什么是Node.js Node.js下载 Node.js和JavaScript的区别Node.js安装与验证 Node.js使用方式1. REPL模式2. 文...
    99+
    2024-04-02
  • NodeJS学习笔记之FS文件模块
    一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 (1),文件系统模...
    99+
    2022-06-04
    学习笔记 模块 文件
  • NodeJS学习笔记之(Url,QueryString,Path)模块
    一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档: (1),"Url模块"   来个小栗子:...
    99+
    2022-06-04
    学习笔记 模块 NodeJS
  • erpc(EmbeddedRPC)入门笔记
    ERPC是一种用于嵌入式系统的RPC(远程过程调用)框架。它的设计目标是提供一种简单、轻量级的通信机制,让嵌入式设备可以与其他设备或...
    99+
    2023-09-28
    erpc
  • ARM入门笔记(3)
    第三章 点亮我的LED ――I/O输出实验 一.背景 当完成上述实验后,我就可以像使用51单片机那样,在C文件的main()函数中通过设置相应的寄存器来达到对相应外设(如I/O的输入、输出等)的控制目的。 二.实验目的 通过控制PIO的相关...
    99+
    2023-01-31
    入门 笔记 ARM
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作