developit / workerize

🏗️ Run a module in a Web Worker.
https://github.com/developit/workerize-loader
4.35k stars 91 forks source link

Consider removing expose(), call() and kill() ? #26

Open ribizli opened 6 years ago

ribizli commented 6 years ago
    worker.expose = methodName => {
        worker[i] = function() {
            return worker.call(methodName, [].slice.call(arguments));
        };
    };

Instead methodName parameter should be used:

    worker.expose = methodName => {
        worker[methodName] = function() {
            return worker.call(methodName, [].slice.call(arguments));
        };
    };

Beside that I don't see why the call and expose methods are accessible from outside. (Don't assign to worker at all) The purpose of the kill method is also not clear for me.

developit commented 6 years ago

heh - i was a mistake, but it still worked for automatic methods because it was using i from the outer scope.

call and expose are both exposed because sometimes autogeneration could fail. It might be worth looking into the byte cost for this, though - I'm not sure they are widely used. Kill is just a way to shut down the worker before terminating it, and probably worth applying the same scrutiny as the other two.

vano21 commented 6 years ago

Is it possible to terminate a worker from the main app and if so how? Calling terminate() or kill() doesn't work. Thanks.

developit commented 6 years ago

terminate() should work.

boblauer commented 6 years ago

A fix for terminate() not working - https://github.com/developit/workerize/pull/28