N S*_*rma 2 javascript node.js async-await
嗨,我有一个异步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");
})
};
Run Code Online (Sandbox Code Playgroud)
我这样调用此函数,但是在执行此行之后,此后将流异步代码。
await mapping.deleteMapping(cookie);
Run Code Online (Sandbox Code Playgroud)
有人知道如何处理吗?
您的函数不需要异步,因为您没有在函数内调用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");
})
})
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据流中返回的内容来解决或拒绝。