1"use strict"; 2const waterfall = require('./index'); 3 4var generateSyncTask = function(index) { 5 return function (x){ 6 return function(cb){ 7 console.log(x); 8 cb(null); 9 }; 10 }(index); 11}; 12 13 14var generateAsyncTask = function(index) { 15 return function (x){ 16 return function(cb){ 17 setTimeout(function(){ 18 console.log(x); 19 cb(null); 20 }, 0); 21 }; 22 }(index); 23}; 24 25var generateSyncTasks = function(count){ 26 var tasks = []; 27 for(var i=0; i<count; i++) { 28 tasks.push(generateSyncTask(i)); 29 } 30 return tasks; 31} 32 33var generateAsyncTasks = function(count){ 34 var tasks = []; 35 for(var i=0; i<count; i++) { 36 tasks.push(generateAsyncTask(i)); 37 } 38 return tasks; 39} 40 41 42var generateRandomTasks = function(count){ 43 var tasks = []; 44 for(var i=0; i<count; i++) { 45 Math.random() > .5 ? tasks.push(generateAsyncTask(i)) : tasks.push(generateSyncTask(i)) 46 } 47 return tasks; 48} 49 50var done = function(){ 51 console.log('done'); 52} 53 54var testSync = function(){ 55 waterfall(generateSyncTasks(10), done); 56 console.log('this text should be after waterfall'); 57 58}; 59 60var testAsync = function(){ 61 waterfall(generateAsyncTasks(5), done); 62 console.log('this text should be before waterfall'); 63}; 64 65var testMixed = function(){ 66 waterfall(generateRandomTasks(20), done); 67}; 68 69 70console.log('testSync:'); 71testSync(); 72 73// console.log('\ntestAsync: '); 74// testAsync(); 75 76console.log('\ntestMixed: '); 77testMixed();