iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 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://www.lsjlt.com/news/152101.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js入门笔记 之async模块
    目录前言asyncseriesparallelwaterfallmap前言 前面我们介绍了异步模块的CPS解决嵌套回调的方法,但是随着业务的推进,node的更新方法也越来越快,对于异...
    99+
    2024-04-02
  • Node.js基础入门之path模块,url模块,http模块使用详解
    目录path模块1. path模块示例2. path模块其他方法url模块1. 旧的解析方法2. 新的解析方法http模块1. 什么是HTTP协议?2. HTTP协议约束的细节3. ...
    99+
    2024-04-02
  • Python学习笔记之json模块和pickle模块
    目录json模块序列化与反序列化json模块中的方法pickle模块总结json模块 json用于不同语言之间的数据交换,比如C和Python之间等等,即可跨语言。而pickle只能...
    99+
    2023-05-18
    json模块 pickle模块 python各个模块讲解
  • Python入门之模块与包
    模块指的是Python的程序文件(源文件),模块的文件名就是模块名加上.py,里面包含了Python对象定义和Python语句,模块包含了定义函数、类和执行代码等等。模块提高了代码的...
    99+
    2024-04-02
  • 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
  • Linux入门笔记3
    一、管理权限和归属1.权限概述文档归属所有者(u):拥有此文件/目录的用户-user所属组(g):拥有此文件/目录的组-group其他用户(o):除所有者、所属组以外的用户-other访问权限读取(r):允许查看内容-read写入(w):允...
    99+
    2023-01-31
    入门 笔记 Linux
  • ARM入门笔记(3)
    第三章 点亮我的LED ――I/O输出实验 一.背景 当完成上述实验后,我就可以像使用51单片机那样,在C文件的main()函数中通过设置相应的寄存器来达到对相应外设(如I/O的输入、输出等)的控制目的。 二.实验目的 通过控制PIO的相关...
    99+
    2023-01-31
    入门 笔记 ARM
  • erpc(EmbeddedRPC)入门笔记
    ERPC是一种用于嵌入式系统的RPC(远程过程调用)框架。它的设计目标是提供一种简单、轻量级的通信机制,让嵌入式设备可以与其他设备或...
    99+
    2023-09-28
    erpc
  • Node.js基础入门之模块与npm包管理器使用详解
    目录require函数模块分类第三方模块1. 安装第三方模块2. 引入第三方模块3. 示例测试系统模块require注意事项exports导出对象1. exports示例2. exp...
    99+
    2024-04-02
  • 【Apollo学习笔记】——规划模块TASK之PATH_DECIDER
    文章目录 前言PATH_DECIDER功能简介PATH_DECIDER相关配置PATH_DECIDER总体流程路径决策代码流程及框架MakeStaticObstacleDecision PATH_DECIDER相关子函数参考 ...
    99+
    2023-08-30
    自动驾驶 决策规划 算法 planning apollo 人工智能
  • C++入门笔记之std::vector容器详解
    目录前言1. vector的构造函数原型: 2. vector的赋值函数原型:3. vector的容量和大小函数原型:4. vector的插入和删除函数原型:5. vector的存取...
    99+
    2024-04-02
  • AHBRAM模块验证笔记
    文章目录 AHBRAM模块验证笔记AHBRAM模块解读AHBRAM验证结构布局AHBRAM测试用例AHBRAM覆盖率收集分析覆盖率收集情况添加新的测试用例异常激励测试 AHBRAM模块...
    99+
    2023-09-06
    网络 服务器 网络协议
  • Python 入门学习笔记
    1 安装Anaconda和jupyter notebook   之前没有听说过这两个名词,然后看完介绍,按照我自己的理解,Anaconda是一个集合很多环境和模块的存储地方。 Jupyter notebook 就是一个可以在此环境里打代码...
    99+
    2023-01-30
    学习笔记 入门 Python
  • 【学习笔记】Mininet 入门
    【学习笔记】Mininet入门实战 课程介绍 Mininet是由一些虚拟的终端节点、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。 Mininet可以很方便地创建一个支持SDN的网络:...
    99+
    2023-12-22
    学习 网络 服务器
  • Ansible 入门学习笔记
    本文 的主要内容来自ansible官网书籍。 本文采用vagrant软件基于VirtualBox的虚拟机进行自动化管理,先要安装VirtualBox和vagrant两个软件。类似Docker有Dockerfile, Jenkins有Je...
    99+
    2023-01-31
    学习笔记 入门 Ansible
  • Docker快速入门笔记
    Docker快速入门 前言   当今软件开发领域的一股热潮正在迅速兴起,它融合了便捷性、灵活性和可移植性,让开发者们欣喜若狂。它就是 Docker!无论你是一个初学者,还是一位经验丰富的开发者,都不能错过这个引领技术浪潮的工具。   想...
    99+
    2023-08-23
    docker 笔记 容器
  • Node.js常用三大模块之path模块
    目录相对路径和绝对路径概念路径特殊符号path路径模块什么是path路径模块获取路径名path.dirname()路径拼接path.join()获取路径中文件名path.basena...
    99+
    2024-04-02
  • node.js exports对象入门指南:解锁模块化编程大门
    在 Node.js 中,exports 对象是模块化编程的核心,它允许我们创建可重用的代码块并导出它们以供其他模块使用。了解 exports 对象对于构建模块化和可维护的 Node.js 应用程序至关重要。 exports 对象概述 ex...
    99+
    2024-04-02
  • C语言入门学习笔记之typedef简介
    在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。 typedef 创建的符号只能用于数据类型,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作