1

我正在使用Node.js REPL 模块来实现 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))
  )()
};

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

(这是上下文中的代码

4

1 回答 1

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));
};

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

于 2022-01-16T15:30:47.860 回答