从 prompt.get 返回

Returning from prompt.get

我目前正在使用 Node 中的提示包在命令行上获取用户输入,但是,我想 return 来自 prompt.get 的变量 - 我将如何存储 return variable/where 我可以从那里访问它吗?我对 Node 比较陌生。

const prompt = require('prompt');

prompt.start();
prompt.get(['num'], function (err: any, result: any) {
    if (err) { return Error(err); }
    if(result.num > 0) {
        return "Positive";
    }
    else {
        return "Negative";
    }
});

干杯!

您可以在回调外部初始化变量,然后在回调内部设置变量:

let value;

prompt.get(['num'], function (err: any, result: any) {
    if (err) { return Error(err); }

    value = result > 0 ? "Positive" : "Negative";
});

但问题是在完成之前该值将为空,因此如果您尝试在之后立即调用它,它将为空。

let value;

prompt.get(['num'], function (err: any, result: any) {
    if (err) { return Error(err); }

    value = result > 0 ? "Positive" : "Negative";
});

console.log(value); // => undefined

虽然该包也支持承诺,因此您可以只使用 await,如 shown on their readme:

(async () => {
    const { num } = await prompt.get(['num']);
})();

您应该注意到匿名自执行异步函数,那是因为 await 仅在异步函数内部工作(技术上在节点 v15 之后和使用模块时不需要)。