Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/developit/workerize

🏗️ Run a module in a Web Worker.
https://github.com/developit/workerize

threading web-worker web-workers

Last synced: 20 days ago
JSON representation

🏗️ Run a module in a Web Worker.

Awesome Lists containing this project

README

        


💖 Using Webpack? You want workerize-loader ➡️

workerize

# Workerize [![npm](https://img.shields.io/npm/v/workerize.svg?style=flat)](https://www.npmjs.org/package/workerize) [![travis](https://travis-ci.org/developit/workerize.svg?branch=master)](https://travis-ci.org/developit/workerize)

> Moves a module into a Web Worker, automatically reflecting exported functions as asynchronous proxies.

- Bundles a tiny, purpose-built RPC implementation into your app
- If exported module methods are already async, signature is unchanged
- Supports synchronous and asynchronous worker functions
- Works beautifully with async/await
- Just **800 bytes** of gzipped ES3

## Install

```sh
npm install --save workerize
```

### Usage

Pass either a function or a string containing code.

**worker.js**:

```js
let worker = workerize(`
export function add(a, b) {
// block for half a second to demonstrate asynchronicity
let start = Date.now();
while (Date.now()-start < 500);
return a + b;
}
`);

(async () => {
console.log('3 + 9 = ', await worker.add(3, 9));
console.log('1 + 2 = ', await worker.add(1, 2));
})();
```

### License

[MIT License](https://oss.ninja/mit/developit/) © [Jason Miller](https://jasonformat.com)