簡體   English   中英

如何等待2秒以Java語言輸入

[英]How to wait 2 seconds for input in Javascript

我正在使用javascript編程電視遙控器,如果用戶再按一次1(1通道或11通道或111通道),則需要按2號功能等待2秒。

我寫了這個函數,但它在循環中僅顯示11111111 ,這是我的代碼:

 function chChannel(pressed) {
     setInterval(function () {
         if (lengthCS < 3) {
             inputChannel += pressed;
             lengthCS = inputChannel.length;
         }
     }, 2000);

     // call function to change channel using variable value inputChannel for ex. 011
 };

有什么解決辦法嗎?

因此,函數需要等待2秒鍾,然后等待2秒鍾,它會在變量InputChannel中獲取按下數字的值,這樣我就可以調用函數以將Channel從Value InputChannel更改為數字。

聽按鍵並計數是一本有據可查的東西,但是,在實際主題的背景下,我想說,沒有正確的Waiting方法,除了將超時調用設置為可重復檢查的函數來結束腳本外,等待時間是否已經過去,如果沒有過去,則使用例如setTimeout進行自觸發。 100ms,如果是,則調用繼續主程序的函數。 然后,等待線程還可以檢查和計數按鍵,例如。 在全局變量中作為基本解決方案。

使用“ setTimeout”。

var Timer;

function chChannel(pressed) {
    clearTimeout(Timer);
    Timer = setTimeout(function () {
        if (lengthCS < 3) {
            inputChannel += pressed;
            lengthCS = inputChannel.length;
        }
    }, 2000);

    // call function to change channel using variable value inputChannel for ex. 011
};

您是否考慮過使用下划線的反跳功能之類的東西,會使事情變得更加簡單。

http://underscorejs.org/#debounce

可能是這樣的事情可能在電話上無法自己測試...

var inputChannel;

 function chChannel(pressed) {
     if (inputChannel <= 3) {
         inputChannel += pressed;
     } 
     else {
        inputChannel = pressed;
    }
    _.debounce(someFunction, 2000);
 };

只要在延遲時間內不斷調用防抖功能,它就不會執行,只會在延遲后執行一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM