inline-web-worker

A tiny library to help make using web workers easier. (>1k)

Usage no npm install needed!

<script type="module">
  import inlineWebWorker from 'https://cdn.skypack.dev/inline-web-worker';
</script>

README

$worker CircleCI

A tiny library to help make using web workers easier. (>1k)

For more info on web workers look here

Install

npm i inline-web-worker --save

Support

Chome, Firefox, Safari, and IE11+

takes advantage of promises, if running in browser with no native support use shim.

npm i es6-promise --save

Basic Usage

// if using webpack/browserify
var $worker = require('inline-web-worker');

// if using as global
var $worker = window.$worker;

// pass in a function to be run in a separate thread
var myWorker = $worker().create(function () {
    self.postMessage('Hello World');
});

// run the worker respond to the promise
myWorker.run().then(function (e) {
    console.log(e.data); // 'Hello World'
});

API

$worker

factory - creates instance of $worker that can then be used to create web workers

Example:

var worker = $worker();

$worker().create()

creates a new web worker

Arg Type description
fn Function the function to run in a web worker

Example:

function helloWorld() {
    self.postMessage('Hello World');
}

var myWorker = $worker().create(helloWorld);

$worker().create().run()

Post data for the web worker to use. Runs the web worker and returns a promise;

Arg Type description
data * the data to be posted (cannot be function)

Example:

$worker()
  .create(function (e) {
      self.postMessage(e.data.toUpperCase());
  })
  .run('hello world')
  .then(function (e) {
      console.log(e.data) // HELLO WORLD
  });

$worker().runAll()

Run all workers in a group. resolves promise when all workers are successful.

Arg Type description
data * the data to be posted (cannot be function)

Example:

var workerGroup = $worker();

workerGroup.create( ... );
workerGroup.create( ... );

workerGroup
    .runAll([...data])
    .then(function () {
        ... do stuff
    });

$worker().list()

Returns a list of all of the created workers

Example:

var workerGroup = $worker();

workerGroup.create( ... );
workerGroup.create( ... );

workerGroup.list().length === 2