我用Promise对象解决了这个问题。resolve方法可以用于返回在流的“end”事件中处理的数据,同时仍然可以与async/await关键字一起使用。
// CSV Processing
function readCsv(csvfilepath) {
var stream = fs.ReadStream(csvfilepath)
return new Promise((resolve, reject) => {
var output = []
const parser = csv.fromStream(stream, {headers:true})
.on('data', (data) => {
parser.pause();
c(data, output, (err) => {
if (err) reject(err)
parser.resume()
})
})
.on('end', () => {
resolve(output) // extraction/return point of the desired data
})
var c = (data, out, callback) => {
out.push(data)
callback()
}
})
}