使用parallel.js

时间:2017-03-20 18:39:38

标签: javascript multithreading

我正在尝试使用parallel.js并行化JavaScript项目,但我遇到了某种解析问题。

该项目的目标是让9家售票员并行处理客户。我们现在有一个工作代码,但客户的处理仍然是异步的,我们正在尝试使用parallel.js来实现并行化部分。

在并行化之前,我在JS中的原始代码是:

var ticketers = ["H", "M1", "M2", ...]; //There are 9 ticket-sellers

for(var i = 0; i < ticketers.length; i++) {
     ticketerBehavior(i);
}

如果售货员是9个售票员,而ticketerBehavior()是负责售票员收到客户时会发生什么的功能。

使用parallel.js文档和示例,这是我们尝试过的:

var ticketBehav = function(ticketers){
    for (var i = 0; i < ticketers.length; i++)
            ticketerBehavior(i);
};

var p = new Parallel(100);
p.spawn(ticketBehav(ticketers)).then(console.log(ticketBehav(ticketers)));

但是,当我们运行程序时,它会给我们这个错误:

/home/user/node_modules/paralleljs/lib/parallel.js:106
        return preStr + 'process.on("message", function(e)      {process.send(JSON.stringify((' + cb.toString() + ')(JSON.parse(e).data)))})';
                                                                                               ^

TypeError: Cannot read property 'toString' of undefined
at Parallel.getWorkerSource (/home/user/node_modules/paralleljs/lib/parallel.js:106:91)

我尝试使用谷歌搜索错误,但到目前为止它没有返回任何结果。我对如何解决此错误感到有点困惑,因为我们的数据在技术上可序列化为JSON,因为它们只是字符串。版本兼容性是否会导致运行parallel.js出现任何问题?

有谁可以告诉我从哪里开始排除故障?任何提示/建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

  1. 传递你的订单
  2. 为每张票执行您的功能
  3. 然后返回您的数据

    p.spawn(function (ticketers) {return ticketBehav(data)}).then(function(data){ console.log(data) });