javascript - 等待事件中的变量

标签 javascript node.js events input async-await

我正在尝试编写一个交互式界面,为此我在类中使用 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 . . .
*/

有办法做到这一点吗?如果我的问题不是,请告诉我

最佳答案

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

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

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

关于javascript - 等待事件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74085675/

相关文章:

javascript - 未捕获的类型错误 : Cannot set property 'volume' of null

javascript - 如何使用 php 将网络摄像头捕获的图像存储在指定文件夹中,并将捕获的图像路径存储在 mysql 数据库中?

javascript - 类型错误 : Cannot read property "namedValues" from undefined.(第 9 行,文件 "Code")

javascript - Firebase Cloud Function 错误,函数返回未定义、预期 Promise 或值

html - 在 React 的 onFocus 期间区分键盘和鼠标事件

javascript - 在循环中添加div jquery

javascript - 将 MediaRecorder blob 发送到服务器并在后端构建文件

node.js - Node redis 报告 "EXEC without MULT"

javascript - 小故障但可能是一个重要问题

javascript - iPhone 为 (hash and 3) 和 (Asterisk and 8) 返回相同的按键事件