嗨我有async 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);
有谁知道如何处理这个问题?
答案 0 :(得分:3)
您的功能不需要异步,因为您没有在函数内调用await。
你能做的就是回复新的承诺:
const removeMapping = function (query) {
return new Promise((resolve, reject) => {
let stream = query.foreach();
stream.on('data', function (record) {
resolve(client.delete(record));
})
stream.on('error', function (error) {
reject(error)
})
stream.on('end', function () {
resolve("completed");
})
})
};
然后,您可以根据流中的内容解决或拒绝。