javascript - 在 javascript 中设置后台计时器

标签 javascript timer crm microsoft-dynamics

我试图阻止 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>

希望对你有帮助!

关于javascript - 在 javascript 中设置后台计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825332/

相关文章:

c++ - Timer1 在 Arduino UNO (ATMEGA328) 上表现怪异

c# - 当 PC 从 sleep 中唤醒时,计时器会发生什么情况?

java - Java 中的 AsyncTask 等价物

javascript - Backbone 中的函数未定义

javascript - 添加到数组并打印出值 - 不打印数组值

javascript - 让我的切换按钮与 Bootstrap 一起使用

javascript - "Potential Infinite Loop"困惑

JQuery 1.7.2 min.js 版本不适用于 CRM2011 roll up 12

javascript - 使用 Notify.js 添加指向新创建的实体记录的链接 - CRM