28 Nodejs 异步流程控制

本文介绍了Node.js中异步流程控制,特别是使用async库的方法,包括async.series实现串行无关联执行,async.parallel进行并行无关联执行,以及async.parallelLimit和async.waterfall的用法,详细探讨了各种场景下的异步控制策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异步流程控制对象async

串行无关联: async.series
并行无关联: async.parallel
串行有关联: waterfall
parallelLimit函数: 与 parallel类似,但多了limit限制:
limit参数限制任务同时的并发数量, 而非无限制并发执行

安装 npm install async --save-dev
D:\www\nodejs\study>npm install async --save-dev
npm WARN saveError ENOENT: no such file or directory, 
open 'D:\www\nodejs\study\package.json'
npm WARN enoent ENOENT: no such file or directory, 
open 'D:\www\nodejs\study\package.json'
npm WARN study No description
npm WARN study No repository field.
npm WARN study No README data
npm WARN study No license field.

+ async@3.1.0
updated 1 package and audited 1 package in 1.87s
found 0 vulnerabilities

这是安装好了? 还是没安装好??
开始不知道安装成功与否,但代码都可以正常运行,说明安装是成功的>_<

1、一般顺序设计

1.1 函数顺序执行
// d28_async.js
function oneFun(){
   
	console.log('oneFun执行完毕');
}
function twoFun(){
   
	console.log('twoFun执行完毕');
}

oneFun();
twoFun();
console.log('主程序执行完毕');
1.2、函数引入定时器
// d29_async.js
function oneFun(){
   
	setTimeout(function(){
    },1000); //1000ms后执行1次
	console.log('oneFun执行完毕');
}
function twoFun(){
   
	setInterval(function(){
    },1000);//每隔1000ms便重复执行1次
	console.log('twoFun执行完毕');
}

oneFun();
twoFun();
console.log('主程序执行完毕');

setTimeout(recall, 1000); //1000ms后执行1次 recall(); 以递归(自我调用)可实现重复执行
setInterval(recall, 1000); //每隔1000ms便重复执行1次 recall()
clearInterval(); // 清除定时器

1.3、setInterval 实现异步交叉执行
// d30_async.js
function oneFun(){
   
	var jj=0;
	setInterval(function(){
    //每隔1000ms便重复执行1次
		console.log(new Date()+' | '+jj);
		jj++;
		if (jj==5) {
   clearInterval(this);}
	},1000);
	console.log('oneFun执行完毕');
}

function twoFun(){
   
	var jj=10;
	setInterval(function(){
    //每隔1000ms便重复执行1次
		console.log(new Date()+' | '+jj);
		jj++;
		if (jj==15) {
   clearInterval(this);}
	},1000);
	console.log('twoFun执行完毕');
}

oneFun();
twoFun();
console.log('主程序执行完毕');

注意: 在oneFun() 和 twoFun() 中都有变量 jj,必须以var申明;
若不申明, 则 jj 为全局变量, 两函数内 jj 变量会相互干扰。

1.4、setInterval 嵌套实现顺序执行

在 onFun() 内嵌套调用 twoFun() 达到顺序执行效果

// d31_async.js
function oneFun(){
   
	var jj=0;
	setInterval(function(){
    //每隔1000ms便重复执行1次
		console.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值