0.1.2 • Published 8 years ago

battalion v0.1.2

Weekly downloads
-
License
MIT
Repository
-
Last release
8 years ago

Battalion

A simple interface between Workers.

Install

npm install --save battalion

Getting Started

To expose an interface from a Worker:

// src/worker-module.js
import Battalion from 'battalion'

Battalion.export(self, {
  addTwo ({ first, second }) {
    return first + second
  }
})

Then, to create / access that worker from the main thread:

// src/index.js
import Battalion from 'battalion'
import MyWorker from './worker-module' // import worker with webpack / worker-loader

let battalion = new Battalion(MyWorker)
let workerInstance = battalion.createInstance()

workerInstance.dispatch('addTwo', { first: 1, second: 2 }).then((result) => {
  console.log(result) // => 3
})

API

Options object:

  • Promise: the Promise implementation to use (defaults to Promise)
  • Task: the Task implementation to use (uses Promises by default)

Battalion(MyWorker, options)

MyWorker: Worker class.

Battalion.export(context, methods)

Exposes methods from a worker file.

context: The worker context (should be self)

methods: Object containing methods that will be called by dispatch.

Battalion#createInstance(options)

Returns a WorkerInstance.

Battalion#createPool(count, options)

count: Number of workers to use.

Returns a PoolInstance.

WorkerInstance#dispatch(type, data)

Assign a worker instance a job.

type: Name of exported function to run.

data: Object that will be passed to the function.

Returns a Promise (or Task) of the eventual result.

PoolInstance#dispatch(type, data)

Same as above, but will be distributed among available workers.

PoolInstance#subscribe(callback)

callback: Function, will be called when a job is complete.

Receives an object containing two properties: completed (total number of completed jobs) and pending (jobs in job queue).

PoolInstance#clear()

Resets the completed jobs count and empties the existing job queue.

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago