将 Node.js 的 REPL eval 与异步函数一起使用
Using Node.js's REPL eval with an async function
我正在使用 Node.js REPL module 来实现 REPL。
这是我启动 REPL 的方式:
const cli = repl.start({ eval: evals });
我有一个函数 answer
,它接受一些参数和 returns 答案。 answer
是异步的。 evals
是一个函数,它将 REPL 对 eval
函数的需求与我的 answer
函数所提供的联系起来。 evals
看下面
const evals = (command, context, file, callback) => {
(async () =>
callback(null, await answer(command, arg1))
)()
};
现在,好消息是,它有效。但这看起来比它需要的要复杂得多。我是否遗漏了一些方法来简化维护工作?
(这里是code in context)
我认为让 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));
};
(无论哪种情况,您都可以省略大括号,但我不确定我是否更喜欢它。)
我正在使用 Node.js REPL module 来实现 REPL。
这是我启动 REPL 的方式:
const cli = repl.start({ eval: evals });
我有一个函数 answer
,它接受一些参数和 returns 答案。 answer
是异步的。 evals
是一个函数,它将 REPL 对 eval
函数的需求与我的 answer
函数所提供的联系起来。 evals
看下面
const evals = (command, context, file, callback) => {
(async () =>
callback(null, await answer(command, arg1))
)()
};
现在,好消息是,它有效。但这看起来比它需要的要复杂得多。我是否遗漏了一些方法来简化维护工作?
(这里是code in context)
我认为让 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));
};
(无论哪种情况,您都可以省略大括号,但我不确定我是否更喜欢它。)