gpt4 book ai didi

node.js - 如何在nodejs中屈服于按键检测?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:50 25 4
gpt4 key购买 nike

在我的 Nodejs 应用程序中,我正在紧密循环中执行一些 CPU 密集型工作:

while(!isQuit) {
doMyWork();
}

为了便于解释,doMyWork() 是一个将随机数据写入文件的简单方法。

在代码的开头,我添加了检查键盘按下的逻辑:

var isQuit = false;
const readline = require('readline');
readline.emitKeypressEvents(process.stdin);
process.stdin.setRawMode(true);
process.stdin.on('keypress', (str, key) => {
if (key.name === 'q') {
isQuit = true;
}
});

这个想法是当用户按键盘上的“q”时退出我的处理。

问题是键盘按键没有被查看。我认为这主要是因为我的紧密循环没有给键盘事件处理带来喘息的机会。

我可以在紧密循环中进行一些函数调用来进行键盘事件处理吗?

或者,有没有办法重写我的 while 循环,以便 doMyWork() 不断被异步调用,直到收到按键事件?

最佳答案

尝试an interval而不是循环。

let handle = setInterval(function(){
if (isQuit) {
clearInterval(handle);
} else {
doMyWork();
}
}, 1);

这应该让 stdin 有机会进入事件循环。

关于node.js - 如何在nodejs中屈服于按键检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55733234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com