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 agenerator*
so you can iterate overasyncTask.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: