在JavaScript中使用不同线程中的不同参数运行相同的函数

时间:2017-02-10 14:17:37

标签: javascript multithreading asynchronous

我试图在多个线程中进行多个字典搜索。

我有一个findBinaryWord(..)函数,我想运行两次或者x次,每次都在不同的线程上,每个函数得到2个参数,这应该返回true或false如果找到了单词。

试图使用async& webhamsters http://www.hamsters.io/http://caolan.github.io/async/

但我无法找到如何将多个带变量的函数设置到函数堆栈。

有人可以告诉我一个应该如何写的例子吗?

我尝试了以下内容:

translator.js

stack.push(dictionaryManager.findBinaryWord(data.word, translator.dictionaries[dictionary]["words"] ) );

并启动堆栈

async.parallel( stack, function( err, result ) {
        console.log(result);
    });

但是我收到了错误:

未捕获的TypeError:false不是函数

这是我的函数,它获取单词,一个字符串,一个数组,在哪里搜索,一个单词数组。

dictionaryManager.js

function findBinaryWord( word, dict ) {..

    // If we've found the word, stop now
    if ( word === found ) {
        foundit = true;
        callback(null, foundit);
}
..
.
// Nothing was found
callback(null, false);
}

1 个答案:

答案 0 :(得分:0)

stack数组中,你实际上并没有推送一个函数,而是它的结果,我认为它是false因此错误。

试试这样。 (将callback作为第三个参数添加到findBinaryWord

 stack.push(function(callback) { 
     dictionaryManager.findBinaryWord(data.word, translator.dictionaries[dictionary]["words"], callback);
 });

并将您的findBinaryWord更改为接受callback作为参数

function findBinaryWord( word, dict, callback) {
    // ...
    // If we've found the word, stop now
    if ( word === found ) {
        foundit = true;
        callback(null, foundit);
    }
}