【发布时间】:2019-12-26 08:29:08
【问题描述】:
我试图解析 csv 文件,根据获取的信息,我正在使用它进行 api 调用。
代码如下:
let booklist = [];
let updatedBook;
fs.createReadStream("Book1.csv")
.pipe(csv())
.on('data', async function(data){
console.log("data");
updatedBook = await apiCall(data.title, data.author, booklist);
})
console.log(updatedBook);
return updatedBook;
这里的预期行为是打印data,执行apiCall()函数,获取CSV文件中的下一个数据,打印data,执行apiCall()等等。
但是,await 不会完成 apiCall 并读取 CSV 文件中的下一个数据。所以,最后,它只返回未定义的updatedBook。
如果我睡 10 秒并等待所有 apiCall 完成,它会返回正确的 updatedBook,但我认为这不是正确的做法。
我在这里缺少什么? await 不应该在这个特定的功能中工作吗?
您的回答将不胜感激!谢谢!!
【问题讨论】:
-
能否提供api调用的代码?
-
您在
data事件开始之前记录updatedBook.. 流式开始异步... -
callback to handle completion of pipe 和其他一些的可能重复:1234
-
@MatJ 哦,我明白了 - 有没有办法在完成所有 apiCall() 后返回 updatedBook?
-
@jinjineos,请参阅下面的答案或this answer 提供另一种方式..
标签: node.js