如何等到在nodejs中执行流异步[重复]
Posted
技术标签:
【中文标题】如何等到在nodejs中执行流异步[重复]【英文标题】:How to wait until stream async is executed in nodejs [duplicate] 【发布时间】:2018-09-01 00:22:10 【问题描述】:您好,我有异步 nodejs 功能,我正在使用流概念。我想一旦流完成然后我想从这个函数返回。
const removeMapping = async function (query)
let stream = query.foreach();
stream.on('data', function (record)
client.delete(record);
)
stream.on('error', function (error)
)
stream.on('end', function ()
console.log("completed");
)
;
我是这样调用这个函数的,但是在执行这一行之后,在这之后流异步代码。
await mapping.deleteMapping(cookie);
有人知道怎么处理吗?
【问题讨论】:
【参考方案1】:你的函数不需要是异步的,因为你没有在函数中调用 await。
你可以做的是返回一个新的承诺:
const removeMapping = function (query)
return new Promise((resolve, reject) =>
let stream = query.foreach();
stream.on('data', function (record)
client.delete(record);
)
stream.on('error', function (error)
reject(error);
)
stream.on('end', function ()
resolve("completed");
)
)
;
然后,您可以根据流中返回的内容解决或拒绝。
【讨论】:
您正在解析多次,因为我假设数据将被执行多次,您如何处理? 那么不要在你的数据监听器中解决。只要下定决心就行了。当你收到数据时你想做什么? (更新答案以反映这一点)以上是关于如何等到在nodejs中执行流异步[重复]的主要内容,如果未能解决你的问题,请参考以下文章