Skip to content

yornaath/async-task

Repository files navigation

AsyncTask Travis Code Climate

Execute tasks asynchronous tasks without seperate files. In browsers without Worker support it fallbacks to iframe.

In Nodejs it spawns a process using child_process.

Install

npm install async-task

Also support bower

bower install async-task

Usage

var AsyncTask = require( 'async-task' )

var task = new AsyncTask((a, b) => a + b)

task.execute(1, 2)
  .then(function( result ) {
    result === 3
  })
  .catch( handleException )

API

AsyncTask( doInBackground, options )

Creates a new AsyncTask

options
  • options.keepAlive Keep worker alive so .execute can be called multiple times.
  • options.worker Supply worker if you want to share worker between tasks. NB!: termination of worker is left to the user

asyncTask.execute( args... ):Promise

Execute the doInBackground function with supplied args.

Sharing worker example
var AsyncTask = require( 'async-task' )
var BackgroundWorker = require( 'background-worker' )

var worker = new BackgroundWorker({})

var taskA = new AsyncTask(() => 'a', {worker})

var taskB = new AsyncTask(() => 'b', {worker})


Promise.all([
  taskA.execute(),
  taskB.execute()
]).then(function(result) {
  result == [ 'a', 'b' ]
  worker.terminate()
})

Test

npm run-script test

Roadmap

  • doInBackground can return a promise or maybe even a generator* so you can iterate over asyncTask.execute

In the wild

If your using it in your very cool project please drop me a note on jornandretangen àt gmail.com

Partially made, with <3 at:

Foo

About

Execute tasks asynchronous tasks on web Worker without seperate files.

Resources

Stars

Watchers

Forks

Packages

No packages published