1. 程式人生 > >node.js——async同步非同步

node.js——async同步非同步

程式碼是最好的語言,如下所示:

var async=require('./async');

//同步無關聯
function series(){
	async.series({
		'ma':function(done){
			var i=0;
			setInterval(function(){
				if(3==i){
					clearInterval(this);
					done(null,'ma結束');
					return;
				}
				console.log("ma中執行"+new Date());
				i++;
			},1000);
		},
		'mb':function(done){
			var i=0;
			setInterval(function(){
				if(3==i){
					clearInterval(this);
					done(null,'mb結束');
					return;
				}
				console.log("mb中執行"+new Date());
				i++;
			},1000);
		}
	},
	function(err,rs){
		console.log(err);
		console.log(rs);
	}
	);
}

//series();

//非同步無關聯
function parallel(){
	async.parallel({
		'ma':function(done){
			var i=0;
			setInterval(function(){
				if(3==i){
					clearInterval(this);
					done(null,'ma結束');
					return;
				}
				i++;
				console.log('ma中執行'+new Date());
			},1000);
		},
		'mb':function(done){
			var i=0;
			setInterval(function(){
				if(3==i){
					clearInterval(this);
					done(null,'mb結束');
					return;
				}
				i++;
				console.log('mb中執行'+new Date());
			},1000);
		}
	},
	function(err,rs){
		console.log(err);
		console.log(rs);
	}
	);
}

//parallel();


function waterfall(){
	async.waterfall([
		function(done){
			var i=0;
			setInterval(function(){
				if(4==i){
					clearInterval(this);
					done(null,'ma結束');
					return;
				}
				console.log('ma中執行'+new Date());
				i++;
			},1000);
		},
		function(preVal,done){
			var i=0;
			setInterval(function(){
				if(4==i){
					clearInterval(this);
					done(null,'mb結束');
					return;
				}
				console.log(preVal+new Date());
				i++;
			},1000);
		}
	]);
}

waterfall();