node的async模块
废话不多说,直接开始
这个模块有几种方法。分别用于的不通的情况自己喜欢怎么用就怎么用
第一个方法,series 这个方法用于串行切无关联。什么意思那就是,里面的方法是一个一个执行的,每一个方法相互不干扰。没有关系
使用起来也是很简单,我们看一下下面的内容
在上面我们进行了他们一个一个执行相互不干扰,在执行完成以后,结果以对象的方式返回到回调中。
第二个是并行方法parallel
这个的意思就是,里面的方法是一是一起执行的。他们也是相互不干扰的,结果以对象的方式返回到回调中。
- var async = require("async");
- async.parallel({
- 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"}]
- console.timeEnd('parallel');
- }
- })
上面的方法都是同时执行的。这样会大大的减少运行时间。
下一个方法
- async.waterfall([
- (call) =>{
- call(null,'one')
- },
- (one,call) =>{
- call(null,one+'| two')
- },
- (two,call) =>{
- call(null,two+'| three')
- }
- ],function(err,res){
- if(err){
- console.log(err);
- }else{
- console.log(res); //one |two | three
- } })
这个方法串行的写法必须以数组的方式去写。
下一个是auto的方法这个方法可以串行和并行放在一起里面可以有串行和并行
- async.auto({
- funa:function(callback){
- console.log('我是第一个');
- setTimeout(()=>{
- callback(null,{'name':'玉帝'})
- },2000)
- },
- funb:function(callback){
- console.log('我也是第一个执行');
- setTimeout(() =>{
- callback(null,{'age':22});
- },1000)
- },
- func:["funa", function(result,callback){
- console.log('我是在第二个执行完执行');
- setTimeout(() =>{
- callback(null,{'phone':'15655321145'})
- },2000)
- }],
- fund:['func',function(result,callback){
- console.log('我是最后一个执行');
- setTimeout(() =>{
- callback(null,{'password':'yu1234560.'});
- },3000)
- }]
- },
- function(err,res){
- if(err){
- console.log('错误:'+err);
- }else{
- console.log('返回值:'+ JSON.stringify(res));
- }
- }
- )
在上面的代码中,funa和funb是一起执行,func的写法是说,当funb执行完成开始执行func,func执行完成,执行fund。
这样让我们在开发中更好的控制异步操作。
node的async模块的更多相关文章
- [Nodejs] node的fs模块
fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...
- node之path模块
node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...
- 运用node的文件系统模块批量修改文件名
如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入f ...
- Node.js的模块载入方式与机制
Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...
- Node.js Web模块
什么是Web服务器? Web服务器是处理由HTTP客户端发送的,如web浏览器的HTTP请求的软件应用程序,并返回响应于客户端网页. Web服务器通常伴随着图片,样式表和脚本的HTML文档. 大多数W ...
- Node.js工具模块
在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ...
- node.js基础模块http、网页分析工具cherrio实现爬虫
node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言 说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...
- Node.js:模块
概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 expor ...
- node.js之模块
node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...
随机推荐
- Spring IoC 默认标签解析
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 本篇文章主要介绍 Spring IoC 容 ...
- 【秒懂Java】【第1章_初识Java】01_编程语言
各位小伙伴们好哇!从今日起,我将开始更新<秒懂Java>系列文章,从0开始讲解Java的方方面面,后面也将推出配套的视频版,欢迎大家保持关注! 我会尽力办到:在保证通俗易懂的同时,不丢失知 ...
- 入门大数据---Kafka深入理解分区副本机制
一.Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息.每个 broker 都有一个唯一标识 broker.id,用于标识自己在集群中的身份,可以在配置文 ...
- NLP(一)
“自然语言处理”(Natural Language Processing 简称 NLP)包含所有用计算机对自然语言进行的操作. 自然语言工具包(NLTK) 语言处理任务与相应 NLTK 模块以及功能描 ...
- Python-发送邮件验证码
前言 关于 Python 这个栏目,咕了几个月了,今天讲讲如何发送验证码并验证. 因为部分原因,写这篇文章的时候心情是不太好的,播放首歌吧. 代码 导入 导入yagmail,random和ti ...
- DBMS_METADATA.GET_DDL查出不存在的列SYS_C00014_20070116:47:09$
DBMS_METADATA.GET_DDL查出不存在的列SYS_C00014_20070116:47:09$ 前言 很久很久以前,有多久呢? 有多久了,等等我看下截图的日期(溜︿( ̄︶ ̄)︿). 哦, ...
- Selenium之浏览器驱动下载和配置使用
浏览器驱动下载 Chrome浏览器驱动:chromedriver , taobao备用地址 Firefox浏览器驱动:geckodriver Edge浏览器驱动:MicrosoftWebDriver ...
- 20 个 CSS高级样式技巧汇总
使用技巧会让人变的越来越懒,没错,我就是想让你变懒.下面是我收集的CSS高级技巧,希望你懒出境界. 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate ...
- 栈的压入、弹出序列(剑指offer-21)
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 权益质押(Staking):这是关于什么的?
我们最近发表了三篇讲述Fetch.AI分类帐本的文章.这些概述: 我们的权益质押计划的主要特点和验证器的作用 影响我们设计权益质押模型设计的因素 我们的创新共识协议将如何改变用户体验 这些文章包含大量 ...