A Task (Future) implementation in TypeScript. Useful for managing asynchronous tasks that may fail.
A Task is different then a Promise because it is lazy, rather then eager. A Promise
runs as soon as you instantiate it. A Task doesn't run until you call fork
.
Pure functions can return tasks (just not execute them). This means that you
could, for example, return a task from a Redux reducer, if that's your thing.
npm install --save taskarian
yarn add taskarian
import Task from 'taskarian';
function parse(s) {
return new Task(function(reject, resolve) {
try {
resolve(JSON.parse(s));
}
catch(e) {
reject(e.message);
}
});
}
parse('foo').fork(
function(err) { console.error(err) },
function(value) { console.log(value) }
);
It is also possible to cancel a task, if the task supports it:
import Task, { Resolve } from 'taskarian';
const cancellable = new Task((reject, resolve: Resolve<string>) => {
const x = setTimeout(() => resolve('Yo!'), 3000);
return () => clearTimeout(x);
});
const cancel = task.fork(
err => console.error(err),
s => console.warn(`Task should never have finished; ${s}`),
);
cancel();