[英]Set a background timer in javascript
我試圖阻止Dynamics 365 / CRM中的用戶快速單擊同一按鈕,從而啟動同步的窗口阻止事件。 我們能夠在IE中解決此問題,但Chrome似乎“記住”了按鈕的點擊-然后一次又一次地同步啟動相同的事件(這是預期的)。
我曾考慮過要創建一個后台計時器,該操作將在第一次單擊按鈕時啟動,它將使變量變為“ True”,直到計時器結束,然后將變量變為“ False”。
在該變量設置為true的那X秒鍾內,隨后的單擊按鈕將觸發該事件,但僅進行了幾行,函數檢查該變量是否設置為true或false。
到目前為止,這是我的代碼(無效):
function startTimer(duration) {
isTimerOn = true;
var timer = duration, seconds;
setInterval (function () {
seconds = parseInt(timer % 60, 10);
seconds = seconds < 10 ? 0 + seconds : seconds;
if (--timer < 0) {
timer = duration;
}
}, 500);
isTimerOn = false;
};
var isTimerOn = false;
function createWordSummary() {
if (isTimerOn) {
return;
}
try {
startTimer(3);
// Logic here
希望有所幫助,在此先感謝!
您可以嘗試如下操作:
let disabled = false; function startTimer(s) { disabled = true; setTimeout(function() { disabled = false; }, s * 1000); } function createWordSummary() { if ( disabled ) return; startTimer(3); console.log('check'); }
<button onclick="createWordSummary()">Check</button>
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.