Skip to content

kofno/taskarian

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

taskarian

Build Status semantic-release

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.

install

npm install --save taskarian

yarn add taskarian

usage

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