异步流程控制对象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.