autoworker
v0.4.0
Published
Web Workers the Easy Way (TM)
Downloads
15
Readme
autoworker
Web Workers the Easy Way (TM).
No dependencies, less than 700 bytes when minified and gzipped.
Define workers inline or from a separate file, and work with promises to get the results.
Installation
ES6 Module
import AutoWorker from 'autoworker';
Browserify
$ browserify autoworker.js --standalone AutoWorker -o autoworker-browser.js
Usage
Single method
If only a single method is provided, it is exposed on the instance as run
.
let worker = new AutoWorker((a, b, c) => {
console.log('Calculating in a different thread!');
return a + b + c;
});
await worker.run(5, 10, 15); // 30
Multiple methods
Note: Multiple methods on a single
AutoWorker
share the sameWorker
thread, so there is no concurrency (nor is there any concurrency for multiple calls to the same method).
let worker = new AutoWorker({
// destructure arguments from a single object
sum: ({ a, b, c }) => a + b + c,
// methods can be async as needed
asyncProduct: async (a, b, c) => a * b * c
});
await worker.sum({ a: 1, b: 2, c: 3 }); // 6
await worker.asyncProduct(2, 4, 8); // 64
Errors
When errors are caught while running methods, the promise is rejected:
let worker = new AutoWorker({
throws: () => { throw new Error('OHNO'); }
});
try {
await worker.throws();
} catch(err) {
// Error: OHNO
}
Separate files
Since workers execute in a different thread, it can be confusing to see their definitions inline. To keep your workers in separate files:
sum.js
:
export default (a, b, c) => a + b + c;
import sum from './sum.js';
let worker = new AutoWorker(sum);
License
This software is released under the terms of the MIT license. See LICENSE
.