2016-07-14 27 views
4

fast-csvを使用してcsvファイルを処理しようとしていますが、ここに私のコードがあります。fast-csvを使用したcsvファイルの同期処理

var stream = fs.createReadStream("sample.csv"); 
    csv.fromStream(stream, {headers : true}) 
    .on("data", function(data) { 
      console.log('here'); 
      module.exports.saveData(data, callback) 
     }) 
    .on("end", function(){ 
     console.log('end of saving file'); 
    }); 

    module.exports.saveData = function(data) { 
    console.log('inside saving') 
    } 

私が直面している問題は、プロセスが同期していないことです。私は見てい 出力は、私が欲しいのは、ここで

を保存内ここ


で、

を保存内
を保存内、ここで、ここで



のようなものですが、内部保存

私はasync.seriesまたはasync.eachSeriesを使用する必要があると想定していますが、ここでそれをどのように使用するかは正確にはわかりません。すべての入力は非常に高く評価されています

ありがとうございました!

+0

ですから、saveDate'は、CSVデータの次の行を解析するために継続する前に完了するの 'のを待つしたいですか? – robertklep

+0

はい。それは正しい –

答えて

7

あなたは、パーサを一時停止完了するのsaveDataのを待ち、その後、パーサを再開することができます

var parser = csv.fromStream(stream, {headers : true}).on("data", function(data) { 
    console.log('here'); 
    parser.pause(); 
    module.exports.saveData(data, function(err) { 
    // TODO: handle error 
    parser.resume(); 
    }); 
}).on("end", function(){ 
    console.log('end of saving file'); 
}); 

module.exports.saveData = function(data, callback) { 
    console.log('inside saving') 
    // Simulate an asynchronous operation: 
    process.setImmediate(callback); 
} 
+1

それは働いた。ありがとうございました! :) –

関連する問題