我对文件有一些操作,如下所示:
我想使用流来解析CSV并逐行将行放到DB中。问题是我不知道如何将流与promises结合起来。我的代码示例
function processFile(filename) {
return fileManager.downloadFile(filename)
.then(filename => {
console.log('file downloaded');
return fileManager.extractZip(path.join(process.cwd(), 'tmp', `${filename}.zip`));
})
.then(filename => {
fs.createReadStream(path.join(process.cwd(), 'tmp', `${filename}.csv`))
.pipe(csvParser)
.on('data', data => {
//saveSingleItem returns Promise
saveSingleItem(prepareItem(data));
})
.on('error', err => console.log(err))
.on('end', () => console.log('end'));
})
.catch(err => console.log(err));
}
我想知道这个序列何时结束。 Promise.all可能会以某种方式提供帮助但我不知道如何检测来自saveSingleItem方法的promises和来自.csv文件的行的两个prom解析/结束。