我有一個簡單的函式,每秒呼叫一次setInterval,使用
我必須更改值以說明是否有滑鼠或鍵盤活動。
我更新了我的變數的值,但它總是設定為 0 即使console.log被呼叫。
function generateActivity() {
var o = { is_mouse: 0, is_keyboard: 0 };
// Keyboard activity
uiohook.uIOhook.on('keydown', (e) => {
//console.log('Keyboard!')
o.is_keyboard = 1;
})
// Mouse activity
uiohook.uIOhook.on('mousemove', (e) => {
//console.log('mouse');
o.is_mouse = 1;
})
console.log(o);
}
setInterval(generateActivity, 1*1000);
uj5u.com熱心網友回復:
您應該只設定一次偵聽器,而不是每秒設定一次——它們會累積,所以這會帶來問題。
其次,您的o物件不應每秒都在本地創建,這將為您提供與呼叫一樣多的物件。它應該是單個物件。
像這樣的東西:
var o = { is_mouse: 0, is_keyboard: 0 };
// Keyboard activity
uiohook.uIOhook.on('keydown', (e) => {
//console.log('Keyboard!')
o.is_keyboard = 1;
})
// Mouse activity
uiohook.uIOhook.on('mousemove', (e) => {
//console.log('mouse');
o.is_mouse = 1;
})
function generateActivity() {
console.log(JSON.stringify(o)); // Make sure the object is displayed as we want it.
o.is_mouse = o.is_keyboard = 0; // maybe reset after logging...
}
setInterval(generateActivity, 1*1000);
請注意,我已經對輸出物件進行了字串化,否則控制臺可能會延遲顯示它,顯示呼叫后放入屬性中的 0 console.log。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490539.html
標籤:javascript 节点.js
