cancAll
Create a cancellable wrapper for an arbitrary tree of async tasks.
Usage
Read the tests for a thorough understanding.
Basic usage:
var cancAll = require('cancAll');
var task = cancAll();
var someTask = task(function(callback){
setTimeout(function(){
callback(null, 'result');
}, 1000);
});
var someDependantTask = task(function(callback){
someTask(callback);
});
someDependantTask(function(error, result){
error.message === 'Reason for cancellation'
});
task.cancel(new Error('Reason for cancellation'));
More useful, deep task graph usage:
var cancAll = require('cancAll');
function getNumber(callback){
setTimeout(function(){
callback(null, 1);
});
}
function getNumber2(callback){
setTimeout(function(){
callback(null, 2);
});
}
function slowAddValues(a, b, callback){
setTimeout(function(){
callback(null, a + b);
}, 100);
}
function passThroughNeverCalled(result, callback){
setTimeout(function(){
callback(null, result);
});
}
var number = righto(task(getNumber));
var number2 = righto(task(getNumber2));
var added = righto(task(slowAddValues), number, number2);
var result = righto(task(passThroughNeverCalled), added);
result(function(error, result){
console.log(error.message)
});
setTimeout(function(){
task.cancel(new Error('timeout'));
}, 50);