2016-04-28 113 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對象等等。