在JavaScript中设置后台计时器

时间:2019-06-30 13:45:57

标签: 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

希望得到一些帮助,在此先感谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

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>

希望有帮助!