如何等到在nodejs中执行流异步

时间:2018-03-22 14:07:36

标签: javascript node.js async-await

嗨我有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);

有谁知道如何处理这个问题?

1 个答案:

答案 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");
        })

    })

};

然后,您可以根据流中的内容解决或拒绝。

相关问题