2016-04-28 115 views
0

我要运行该功能,更新我的多线程模式DB:为什么我不能从hamsters.js里面运行我的方法?

var params = {'array': array}; 

hamsters.run(params, function() { 

    var arr = params.array; 

    arr.forEach(function (query) { 


     comanda.sincro.query(query, function() { 

      //Optional 
      rtn.data.push(query); 

     }); 

     console.log(query); 

    }); 

}, function (output) { 

    //console.log("MT TEST 2", output, "CB TRUE"); 

    console.log("MT TEST", output); 

    if (typeof (cB) === "function") { 
     cB(true); 
    } 

}, hamsters.maxThreads, true); 

但我得到这个错误:

hamsters.js:886 Error Hamster #0: Line 9 in undefined: Uncaught ReferenceError: comanda is not definedonerror @ hamsters.js:886 
hamsters.js:886 Error Hamster #1: Line 9 in undefined: Uncaught ReferenceError: comanda is not definedonerror @ hamsters.js:886 
hamsters.js:886 Error Hamster #2: Line 9 in undefined: Uncaught ReferenceError: comanda is not definedonerror @ hamsters.js:886 
hamsters.js:886 Error Hamster #3: Line 9 in undefined: Uncaught ReferenceError: comanda is not defined 

为什么,如果我的函数的定义,并正在努力在我的函数回调?

否则,如果我不能对我的元素进行简单操作,那么使用Hamsters.js有什么意义?

+0

“comanda”和“rtn”定义了什么/哪里/如何? – rene

+0

“rtn”我认为它是在对象仓鼠中定义的,而“comanda”是由我定义的,在对象之外 –

+0

错误明确指出,comanda不知道,所以你认为你定义了它,但是在这个之外的某个地方代码你犯了一个错误 – rene

回答

0

Hamsters.js的创建者。我看到的问题是,您正在混合主线程和多线程逻辑的范围。请记住,网络工作者(线程)是沙盒环境,任何想要在线程内部实现的内容都需要传递到线程中。

comanda.sincro.query不存在,因为您没有将它传递给params对象等等。