2016-07-14 2 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

그래서 당신이 CSV 데이터의 다음 행을 구문 분석을 계속하기 전에 완료'saveDate' 기다려야 할을? – 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

그게 효과가있다. 고맙습니다! :) –