You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							1.3 KiB
						
					
					
				| "use strict";
 | |
| const waterfall = require('./index');
 | |
| 
 | |
| var generateSyncTask = function(index) {
 | |
| 	return function (x){
 | |
| 		return function(cb){
 | |
| 			console.log(x);
 | |
| 			cb(null);
 | |
| 		};
 | |
| 	}(index);
 | |
| };
 | |
| 
 | |
| 
 | |
| var generateAsyncTask = function(index) {
 | |
| 	return function (x){
 | |
| 		return function(cb){
 | |
| 			setTimeout(function(){
 | |
| 				console.log(x);
 | |
| 				cb(null);
 | |
| 			}, 0);
 | |
| 		};
 | |
| 	}(index);
 | |
| };
 | |
| 
 | |
| var generateSyncTasks = function(count){
 | |
| 	var tasks = [];
 | |
| 	for(var i=0; i<count; i++) {
 | |
| 		tasks.push(generateSyncTask(i));
 | |
| 	}
 | |
| 	return tasks;
 | |
| }
 | |
| 
 | |
| var generateAsyncTasks = function(count){
 | |
| 	var tasks = [];
 | |
| 	for(var i=0; i<count; i++) {
 | |
| 		tasks.push(generateAsyncTask(i));
 | |
| 	}
 | |
| 	return tasks;
 | |
| }
 | |
| 
 | |
| 
 | |
| var generateRandomTasks = function(count){
 | |
| 	var tasks = [];
 | |
| 	for(var i=0; i<count; i++) {
 | |
| 		Math.random() > .5 ? tasks.push(generateAsyncTask(i)) : tasks.push(generateSyncTask(i))
 | |
| 	}
 | |
| 	return tasks;
 | |
| }
 | |
| 
 | |
| var done = function(){
 | |
| 	console.log('done');
 | |
| }
 | |
| 
 | |
| var testSync = function(){
 | |
| 	waterfall(generateSyncTasks(10), done);
 | |
| 	console.log('this text should be after waterfall');
 | |
| 
 | |
| };
 | |
| 
 | |
| var testAsync = function(){
 | |
| 	waterfall(generateAsyncTasks(5), done);
 | |
| 	console.log('this text should be before waterfall');
 | |
| };
 | |
| 
 | |
| var testMixed = function(){
 | |
| 	waterfall(generateRandomTasks(20), done);
 | |
| };
 | |
| 
 | |
| 
 | |
| console.log('testSync:');
 | |
| testSync();
 | |
| 
 | |
| // console.log('\ntestAsync: ');
 | |
| // testAsync();
 | |
| 
 | |
| console.log('\ntestMixed: ');
 | |
| testMixed(); |