首页 技术 正文
技术 2022年11月10日
0 收藏 725 点赞 4,661 浏览 2556 个字

废话不多说,直接开始

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

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

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


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

 

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

第二个是并行方法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');
}
})

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

下一个方法

waterfall 这个方法也是串行的但是这个下一个方法必须接受上一个方法的返回值。

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。

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,497
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,910
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,744
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,498
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,136
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,301