2016-04-17 27 views
4

私は並列タスクを実行するために非同期モジュールを使用しています。基本的に私は2つの異なるファイル、dashboard.jsとRun.jsを持っています。Node.js async parallel TypeError:タスクが関数ではありません

Dashboard.js

module.exports = { 

    func1 : function(){ 
     console.log(“Funtion one”); 

    }, 
    func2 : function(){ 
     console.log(“Funtion two”); 
    } 

} 

Run.js

var dashboard = require(‘dashboard.js’); 

    var async = require('async'); 

    async.parallel([dashboard.func1, dashboard.func2],function(err){ 
     if(err)throws err; 
     console.log(“ All function executed”); 
    }); 

Iを並列に実行する関数func1とfunc2のを期待していたが、それはエラーの下投げている

TypeError: task is not a function 
    at C:\Users\..\java\realtime-preview\node_modules\async\lib\async.js:718:13 
    at async.forEachOf.async.eachOf (C:\Users\..\java\realtime-preview\node_modules\async\lib\async.js:233:13) 
    at _parallel (C:\Users\\java\realtime-preview\node_modules\async\lib\async.js:717:9) 

なぜ私は使用できないdashboard.func1、dashboard.func2でもdashboard.func1は機能ですか?

+0

これらのスニペットは、実行しているコードとまったく同じではないようです。むしろ異なるエラーが出てくるはずです。 1)[Directional quotations](https://en.wikipedia.org/wiki/Quotation_mark#Unicode_code_point_table)は、文字列リテラルの有効な区切り文字ではありません。それらには 'SyntaxError'があります。 2) 'require()' [あなたのプロジェクトの別のファイル](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html#modules_file_modules)には、パスは現行ファイル。 'require( 'dashboard.js')'はnode_modules/dashboard.jsを見つけることを期待しています。 –

+0

try:ブラケットを追加してください。例えば。 dashboard.func1()がうまくいきませんでした。 –

+0

良い見通し、私はdo( './ dashboard.js')のコードを実行していないsudoコードを投稿しました@JonathanLonowski – Sumeet

答えて

1

asyncプロパティの場合は、コールバック機能を使用します。この機能は、ノンブロッキングコールにも役立ちます。あなたのコードで

、あなたは

Dashboard.js

module.exports = { 
    func1 : function(callback){ 
     var value = “Function one”; 

     //if value happens to be empty, then undefined is called back 
     callback(undefined|| value); 
    }, 
    func2 : function(callback){ 
     var value = “Function two”; 

     //if value happens to be empty, then undefined is calledback 
     callback(undefined|| value); 
    } 
} 

Run.js

var dashboard = require(‘dashboard.js’); 

    //func1 
    dashboard.func1(function(callback){ 

    //if callback then do the following 
    if(callback){ 
     console.log(callback); 

    //if no data on callback then do the following 
    }else{ 
     console.error('Error: ' + callback); 
    } 
    }); 

    //func2 
    dashboard.func2(function(callback){ 

     //if callback then do the following 
    if(callback){ 
     console.log(callback); 

    //if no data on callback then do the following 
    }else{ 
     console.error('Error: ' + callback); 
    } 
    }); 
}); 

あなたの次のリンク上に似た質問もあります試みることができる:Best way to execute parallel processing in Node.js

さらに、エラーの具体的な回答は次のリンクにあります。 TypeError: task is not a function in async js parrallel

+0

なぜ私は並列の中にdashboard.func1を追加できないのですか? – Sumeet

関連する問題