【问题标题】:Set a background timer in javascript在javascript中设置后台计时器
【发布时间】:2019-06-30 13:45:57
【问题描述】:

我正在尝试阻止 Dynamics 365 / CRM 中的用户快速单击同一按钮,从而启动同步的窗口阻塞事件。 我们能够在 IE 中解决此问题,但 Chrome 似乎“记住”了按钮的点击 - 然后一次又一次地同步启动相同的事件(正如预期的那样)。

我曾考虑过创建一个后台计时器,它将在第一次单击按钮时启动,这会将变量变为“真”,直到计时器完成,然后将变量变为“假”。

在变量设置为 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

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

【问题讨论】:

    标签: javascript timer crm microsoft-dynamics


    【解决方案1】:

    你可以试试这样的:

    let disabled = false;
    
    function startTimer(s) {
      disabled = true;
      setTimeout(function() {
        disabled = false;
      }, s * 1000);
    }
    
    function createWordSummary() {
      if ( disabled ) return;
      
      startTimer(3);
      console.log('check');
    }
    &lt;button onclick="createWordSummary()"&gt;Check&lt;/button&gt;

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 2015-11-26
      • 2013-01-29
      • 2019-09-24
      相关资源
      最近更新 更多