nodejs异步流程控制

版权声明:版权有就有吧。 https://blog.csdn.net/m0_38044453/article/details/83790403
var async = require('async');


function oneFun(){
	console.log('oneFun');
	/*
	setTimeout(function(){


	},1000);
	*/
	i = 0;
	setInterval(function(){
		console.log('aaaaaa'+new Date());
		i++;
		if(i==3){
			clearInterval(this);
		}
	},1000);
}
function twoFun(){
	console.log('twoFun');
	jj = 0;
	setInterval(function(){
		console.log('bbbbbbb'+new Date());
		jj++;
		if(jj==3){
			clearInterval(this);
		}
	},1000);
}

//oneFun();
//twoFun();

function exec(){

	// 窜行无关联
	async.series(
		{	
			// 按顺序执行,one并不执行完,two不执行,当one出错的时候,two也不执行
			one:function(done){
				i = 0;
				// 异步操作
				setInterval(function(){
					console.log('aaaaaa'+new Date());
					i++;
					if(i==3){
						clearInterval(this);
						done(null,'one完毕');
					}
				},1000);
				
			},
			two:function(done){
				jj = 0;
				setInterval(function(){
					console.log('bbbbbbb'+new Date());
					jj++;
					if(jj==3){
						clearInterval(this);
						done(null,'two完毕');
					}
				},1000);
			}
		},function(err,rs){
			console.log(err);
			console.log(rs);
		}
	);
}
exec();
console.log('主程序执行完成!');
var async = require('async');


function oneFun(){
	console.log('oneFun');
	/*
	setTimeout(function(){


	},1000);
	*/
	i = 0;
	setInterval(function(){
		console.log('aaaaaa'+new Date());
		i++;
		if(i==3){
			clearInterval(this);
		}
	},1000);
}
function twoFun(){
	console.log('twoFun');
	jj = 0;
	setInterval(function(){
		console.log('bbbbbbb'+new Date());
		jj++;
		if(jj==3){
			clearInterval(this);
		}
	},1000);
}

function exec(){

	// 并行无关联
	async.parallel(
		{	
			
			one:function(done){
				i = 0;
				// 异步操作
				setInterval(function(){
					console.log('aaaaaa'+new Date());
					i++;
					if(i==3){
						clearInterval(this);
						done(null,'one完毕');// 若这里出错,例如done('error','one完毕');则会阻止后面的回调
					}
				},1000);
				
			},
			two:function(done){
				jj = 0;
				setInterval(function(){
					console.log('bbbbbbb'+new Date());
					jj++;
					if(jj==3){
						clearInterval(this);
						done(null,'two完毕');
					}
				},1000);
			}
		},function(err,rs){
			console.log(err);
			console.log(rs);
		}
	);
}
exec();
console.log('主程序执行完成!');
var async = require('async');

function oneFun(){
	console.log('oneFun');
	/*
	setTimeout(function(){


	},1000);
	*/
	i = 0;
	setInterval(function(){
		console.log('aaaaaa'+new Date());
		i++;
		if(i==3){
			clearInterval(this);
		}
	},1000);
}
function twoFun(){
	console.log('twoFun');
	jj = 0;
	setInterval(function(){
		console.log('bbbbbbb'+new Date());
		jj++;
		if(jj==3){
			clearInterval(this);
		}
	},1000);
}

function exec(){

	// 串行有关联
	async.waterfall(
		[		
			function(done){
				i = 0;
				// 异步操作
				setInterval(function(){
					console.log('aaaaaa'+new Date());
					i++;
					if(i==3){
						clearInterval(this);
						done(null,'one完毕');// 若这里出错,例如done('error','one完毕');则会阻止后面的回调
					}
				},1000);
				
			},
			function(preValue,done){
				jj = 0;
				setInterval(function(){
					console.log(preValue+new Date());
					jj++;
					if(jj==3){
						clearInterval(this);
						done(null,preValue+',two完毕');
					}
				},1000);
			}
		],function(err,rs){
			console.log(err);
			console.log(rs);
		}
	);
}
exec();
console.log('主程序执行完成!');

猜你喜欢

转载自blog.csdn.net/m0_38044453/article/details/83790403