This tiny library makes your heavy JS code run in a separate thread in the browser.
install
npm install work-wrap
or
yarn add work-wrap
Usage
The code will add a single wrap
method to the window.Worker
object (if available). It'll fail silently when there's no Worker
object on window
.
[Function] Worker.wrap(Function)
You can wrap any function as long as it's pure (it must not depend on any external variables).
{ return Math;} var wrappedPow = Worker;;
You can pass to the wrapped function any arguments that can be serialized to JSON and pure functions.
Example of passing a function:
{ return ;} var wrappedPow = Worker { return Math; };
wrappedFn.terminate
When you run terminate the task, it will destroy the worker behind that task. If the worker was running a task, it'll not be finished, so make sure you terminate the worker after the work has been completed.
task = Worker; //Perform your heavy task any number of times.; //When you don't need your heavy task anymore, terminate the worker to free the resources and avoid memory leaks. task;
wrappedFn.restart
If you have terminated the task, the worker behind it can be restarted without wrapping the same function again. Just call task.restart()
.
task = Worker; task; //..Some time later you need to run the task again.task; //Run normally.