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(); |