【问题标题】:Using Node.js's REPL eval with an async function使用带有异步函数的 Node.js 的 REPL eval
【发布时间】:2022-01-16 15:16:54
【问题描述】:

我正在使用 Node.js REPL module 来实现 REPL。

这是我启动 REPL 的方式:

const cli = repl.start({ eval: evals });

我有一个函数answer,它接受一些参数并返回答案。 answer 是异步的。 evals 是一个函数,它将 REPL 对 eval 函数的需求与我的 answer 函数提供的函数联系起来。 evals 看下面。

const evals = (command, context, file, callback) => {
  (async () =>
    callback(null, await answer(command, arg1))
  )()
};

现在,好消息是,它有效。但这看起来比它需要的要复杂得多。我是否遗漏了一些方法来使维护变得相当简单?

(这里是code in context

【问题讨论】:

    标签: node.js async-await read-eval-print-loop node-repl


    【解决方案1】:

    我认为直接使 evals 函数异步应该可以工作:

    const evals = async (command, context, file, callback) => {
        callback(null, await answer(command, arg1));
    };
    

    或者你可以避免 async/await 并直接使用Promise.then;在这种情况下可能会更清楚:

    const evals = (command, context, file, callback) => {
        answer(command, arg1)
            .then((result) => callback(null, result));
    };
    

    (无论哪种情况,您都可以省略大括号,但我不确定我是否更喜欢它。)

    【讨论】:

    • 谢谢!那完全奏效了!并删除了相当多的语法,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-11-11
    • 2016-06-17
    • 1970-01-01
    • 2017-05-19
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多