2017-06-12 6 views
2

タイムスタンプ付きのデータを含む複数のファイルがあるため、これらのファイルを順番に(行ごとに)読み込みたいが、ほとんどのノードパッケージは非同期メソッドを使用してファイルを読み込むには、各行を順番に読み込み、すべてのデータを1つの文字列に格納してから送信する方法はありますか?ノードjs内の複数のファイルを読み取ってJSONデータを送信

私のような何かをしたい:

function callbackReadFilesAndSend(res, req){ 
     var data = "" 
     for(int i=0; i<numOfFiles;i++){ 
    //read lines from files 
      data+=...//data from Files[i] 
    } 
    res.send(data) 

} 

をしかし、私は同期の方法は、実際に使用する悪いと思います。

ありがとうございます。

+0

非同期操作でそれらを混在させると同期が悪いだけです:http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony –

+0

この場合、私が送信しているファイルデータあまりにも大きくない、私はサーバーから送信する前にforループでreadFileSyncを使用できますか? – Deidara

+0

はい、できます。あなたはおそらく 'data + ='を使ってすべてのファイルを結合したくないかもしれませんが、 –

答えて

1

既知のタスクのセットをnode.jsで順番に実行する場合は、async.series(tasks[, callback])のようなものを使用できます。

タスクコレクションの関数を、前の関数が完了した後に実行される一連の関数で実行します。

npm install async 

とあなたのコードでそれを必要とする:あなたがしなければならない非同期モジュールを使用する他に

const async = require('async'); 

そして、この特定の目的のために(ファイルの内容を読み込むに)、あなたはfs.readFileSync(path[, options])のようなnode.js fs同期関数を使用できます。

関連する問題