An open API service indexing awesome lists of open source software.

https://github.com/yornaath/async-task

Execute tasks asynchronous tasks on web Worker without seperate files.
https://github.com/yornaath/async-task

Last synced: about 1 month ago
JSON representation

Execute tasks asynchronous tasks on web Worker without seperate files.

Awesome Lists containing this project

README

          

AsyncTask [![Travis](https://api.travis-ci.org/gorillatron/async-task.svg)](https://travis-ci.org/gorillatron/async-task) [![Code Climate](https://codeclimate.com/github/gorillatron/async-task/badges/gpa.svg)](https://codeclimate.com/github/gorillatron/async-task)
=========
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
```javascript
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

```javascript
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](http://wtw.no/gfx/wtw-logo2.png)](https://github.com/wtw-software/)