【问题标题】:Await a variable from an event等待来自事件的变量
【发布时间】:2022-11-17 02:53:09
【问题描述】:

我正在尝试编写一个交互式界面,因为我在一个类中使用 readline 和 process.stdin 收听关键输入。 我现在的代码是

Console.on('input', (input) => {
    console.log(input); // Return a key Input
    process.exit(0)
})

我希望能够做的是在等待中异常地收听事件。 所以我可以通过等待下一个用户输入来当场定义变量。 例子:

var input = await event(Console, 'input');
console.log(input);
/* 
   event on this case would be a custom functions suggested since i don't know how
   i could do that properly . . .
*/

有没有办法以某种方式做到这一点?如果我的问题不是,请告诉我

【问题讨论】:

  • 如果事件只发生一次,那么你可以做你想做的事
  • 我试图使代码尽可能紧凑。因此我选择了之前给出的答案,这正是我所需要的。
  • 请不要添加您问题的答案。如有必要,添加新答案。

标签: javascript node.js events input async-await


【解决方案1】:

假设您有一个 off 与您的 on 方法一起使用,是的,event 可能如下所示:

function event(source, eventName) {
    return new Promise((resolve) => {
        const handler = (value) => {
            resolve(value);
            source.off(eventName, handler);
        };
        source.on(eventName, handler);
    });
}

这创建了一个承诺并订阅了该事件。下次事件发生时,处理程序使用它收到的任何值(该部分是可选的)履行承诺并取消订阅该事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多