Parallel.js/WebWorker和优化代码的问题



我通过grunt使用rjs优化器。我想使用网络工作者使用并行。js库,但我得到语法错误运行优化的代码。

优化与未优化代码比较:

查看github上的要点:https://gist.github.com/mwager/4123a3fd5577b630582b

你可以看到,我想使用smt像helper().importedHelperFunction1()在工人内部。这样就很容易将辅助函数导入到工作代码中(见http://adambom.github.io/parallel.js/要求)。

真正的问题是语法错误,因为优化的变量-和函数名。chrome开发工具中的语法错误是:

Uncaught SyntaxError: Unexpected token (

在要点的第2行function () {有问题。

在优化后的代码中,帮助程序看起来是这样的:

f=function(){return{importedHelperFunction1:function(a,b){return a+b}}}

但是Parallel.js需要将命名函数导入到worker中:

var webworkerHelpers = function helper() { // <-- named! but not after optimization )-:
    return {
        importedHelperFunction1: function(a, b) {
            return a + b;
        }
...

它会像这样导入函数:

function() { return { importedHelperFunction1: ...

导致语法错误…

我是这样做的:

var theWorker = new Parallel(workerData);
theWorker.require(webworkerHelpers);
有谁知道处理这种问题的最好方法是什么吗?我应该停止使用并行js吗?或者优化器中是否有"不删除函数名"的选项?

嗯,也许我应该考虑另一种(更好的)方式导入我的辅助函数…

我想以这种方式导入,因为传统的浏览器支持,所以如果webworker支持不可用(例如IE9),我可以调用应该像往常一样在worker中传递的函数,然后在那里也使用helper().someFn()

最新更新