废话不多说,直接开始

这个模块有几种方法。分别用于的不通的情况自己喜欢怎么用就怎么用

第一个方法,series  这个方法用于串行切无关联。什么意思那就是,里面的方法是一个一个执行的,每一个方法相互不干扰。没有关系

使用起来也是很简单,我们看一下下面的内容

  1.  
async.series({
    fun1:(callback) =>{
        console.log('one');
        callback(null,{'name':'cyd'});
    },
    fun2:(callback) =>{
        console.log('二');
        callback(null,{'age':20});
    },
    fun3:(callback) =>{
        console.log('三');
        callback(null,{'phone':'15655243356'});
    }
},function(err,res){
    if(err){
        console.log('err:'+err);
    }else{
        console.log(res);
        // {
        //     fun1: { name: 'cyd' },
        //     fun2: { age: 20 },
        //     fun3: { phone: '15655243356' }
        // }
    

    var arr = [];
        for(var item in res){
            arr.push(res[item])
        }
        console.log('return:'+ JSON.stringify(arr));
    //  return:[{"name":"cyd"},{"age":20},{"phone":"15655243356"}]
 
    }
})
  1.  

在上面我们进行了他们一个一个执行相互不干扰,在执行完成以后,结果以对象的方式返回到回调中。

第二个是并行方法parallel

这个的意思就是,里面的方法是一是一起执行的。他们也是相互不干扰的,结果以对象的方式返回到回调中。

  1. var async = require("async");
  2.  
  3. async.parallel({
  4. fun1:(callback) =>{
  5. console.log('one');
  6. callback(null,{'name':'cyd'});
  7. },
  8. fun2:(callback) =>{
  9. console.log('二');
  10. callback(null,{'age':20});
  11. },
  12. fun3:(callback) =>{
  13. console.log('三');
  14. callback(null,{'phone':'15655243356'});
  15. }
  16. },function(err,res){
  17. if(err){
  18. console.log('err:'+err);
  19. }else{
         console.log(res); // { fun1: { name: 'cyd' },fun2: { age: 20 }, fun3: { phone: '15655243356' }}
  1. var arr = [];
  2. for(var item in res){
  3. arr.push(res[item])
  4. }
  5. console.log('return:'+ JSON.stringify(arr)); //return:[{"name":"cyd"},{"age":20},{"phone":"15655243356"}]
  6. console.timeEnd('parallel');
  7. }
  8. })

上面的方法都是同时执行的。这样会大大的减少运行时间。

下一个方法

waterfall 这个方法也是串行的但是这个下一个方法必须接受上一个方法的返回值。
  1. async.waterfall([
  2. (call) =>{
  3. call(null,'one')
  4. },
  5. (one,call) =>{
  6. call(null,one+'| two')
  7. },
  8. (two,call) =>{
  9. call(null,two+'| three')
  10. }
  11. ],function(err,res){
  12. if(err){
  13. console.log(err);
  14. }else{
  15. console.log(res); //one |two | three
  1. } })

这个方法串行的写法必须以数组的方式去写。

下一个是auto的方法这个方法可以串行和并行放在一起里面可以有串行和并行

  1. async.auto({
  2. funa:function(callback){
  3. console.log('我是第一个');
  4. setTimeout(()=>{
  5. callback(null,{'name':'玉帝'})
  6. },2000)
  7. },
  8. funb:function(callback){
  9. console.log('我也是第一个执行');
  10. setTimeout(() =>{
  11. callback(null,{'age':22});
  12. },1000)
  13. },
  14. func:["funa", function(result,callback){
  15. console.log('我是在第二个执行完执行');
  16. setTimeout(() =>{
  17. callback(null,{'phone':'15655321145'})
  18. },2000)
  19. }],
  20. fund:['func',function(result,callback){
  21. console.log('我是最后一个执行');
  22. setTimeout(() =>{
  23. callback(null,{'password':'yu1234560.'});
  24. },3000)
  25. }]
  26. },
  27. function(err,res){
  28. if(err){
  29. console.log('错误:'+err);
  30. }else{
  31. console.log('返回值:'+ JSON.stringify(res));
  32. }
  33.  
  34. }
  35. )

在上面的代码中,funa和funb是一起执行,func的写法是说,当funb执行完成开始执行func,func执行完成,执行fund。

这样让我们在开发中更好的控制异步操作。

node的async模块的更多相关文章

  1. [Nodejs] node的fs模块

    fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...

  2. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...

  3. 运用node的文件系统模块批量修改文件名

      如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入f ...

  4. Node.js的模块载入方式与机制

    Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...

  5. Node.js Web模块

    什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...

  6. Node.js工具模块

    在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ...

  7. node.js基础模块http、网页分析工具cherrio实现爬虫

    node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...

  8. Node.js:模块

    概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 expor ...

  9. node.js之模块

    node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...

随机推荐

  1. Spring IoC 默认标签解析

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...

  2. 【秒懂Java】【第1章_初识Java】01_编程语言

    各位小伙伴们好哇!从今日起,我将开始更新<秒懂Java>系列文章,从0开始讲解Java的方方面面,后面也将推出配套的视频版,欢迎大家保持关注! 我会尽力办到:在保证通俗易懂的同时,不丢失知 ...

  3. 入门大数据---Kafka深入理解分区副本机制

    一.Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息.每个 broker 都有一个唯一标识 broker.id,用于标识自己在集群中的身份,可以在配置文 ...

  4. NLP(一)

    “自然语言处理”(Natural Language Processing 简称 NLP)包含所有用计算机对自然语言进行的操作. 自然语言工具包(NLTK) 语言处理任务与相应 NLTK 模块以及功能描 ...

  5. Python-发送邮件验证码

    前言 ​ 关于 Python 这个栏目,咕了几个月了,今天讲讲如何发送验证码并验证. ​ 因为部分原因,写这篇文章的时候心情是不太好的,播放首歌吧. 代码 导入 导入yagmail,random和ti ...

  6. DBMS_METADATA.GET_DDL查出不存在的列SYS_C00014_20070116:47:09$

    DBMS_METADATA.GET_DDL查出不存在的列SYS_C00014_20070116:47:09$ 前言 很久很久以前,有多久呢? 有多久了,等等我看下截图的日期(溜︿( ̄︶ ̄)︿). 哦, ...

  7. Selenium之浏览器驱动下载和配置使用

    浏览器驱动下载 Chrome浏览器驱动:chromedriver , taobao备用地址 Firefox浏览器驱动:geckodriver Edge浏览器驱动:MicrosoftWebDriver ...

  8. 20 个 CSS高级样式技巧汇总

    使用技巧会让人变的越来越懒,没错,我就是想让你变懒.下面是我收集的CSS高级技巧,希望你懒出境界. 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate ...

  9. 栈的压入、弹出序列(剑指offer-21)

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  10. 权益质押(Staking):这是关于什么的?

    我们最近发表了三篇讲述Fetch.AI分类帐本的文章.这些概述: 我们的权益质押计划的主要特点和验证器的作用 影响我们设计权益质押模型设计的因素 我们的创新共识协议将如何改变用户体验 这些文章包含大量 ...