Nanananananananana.. Pat Man!

    work-wrap

    1.0.0 • Public • Published

    work-wrap Build Status Code Climate

    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).

    function pow(number) {
        return Math.pow(number, 2);
    }
     
    var wrappedPow = Worker.wrap(pow);
    wrappedPow(3).then(function (result) {
        console.log(result); //9
    });

    You can pass to the wrapped function any arguments that can be serialized to JSON and pure functions.

    Example of passing a function:

    function run(fn,number) {
        return fn(number);
    }
     
    var wrappedPow = Worker.wrap(run),
        passedFn = function(value) {
            return Math.pow(value, 2);
        }
    wrappedPow(passedFn, 3).then(function (result) {
        console.log(result); //9
    });

    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.wrap(function() {
        //your heavy code here
    });
     
    //Perform your heavy task any number of times.
    task();
     
    //When you don't need your heavy task anymore, terminate the worker to free the resources and avoid memory leaks.
     
    task.terminate();

    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.wrap(function() {
        //your heavy code here
    });
     
    task.terminate();
     
    //..Some time later you need to run the task again.
    task.restart();
     
    //Run normally.
    task().then(...)

    Keywords

    none

    Install

    npm i work-wrap

    DownloadsWeekly Downloads

    3

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

    • wain-pc