【问题标题】:2 setTimeout function the first one clears the second one javascript2 setTimeout函数第一个清除第二个javascript
【发布时间】:2016-04-01 13:38:39
【问题描述】:

我在 javascript 中设置和清除超时有问题。 我想将 var test2 设置为 var test 的备份 但如果测试有效,我必须删除 test2

var timeSec=2000;

var test = setTimeout(function() {
          clearTimeout(test2);
          jQuery('.next',curdoc)[0].click();

    }, timeSec);
var test2 = setTimeout(function() {
              // do something else
        }, timeSec+timeSec);

【问题讨论】:

  • test2 timeout 永远不会被执行。
  • 就我而言,它确实是一个 Firefox 插件。但是我使用这个插件的网站有时是错误的......
  • “如果测试有效”是什么意思?这如何转化为代码? var test 中没有检查...所以test2 永远不会执行...

标签: javascript jquery settimeout cleartimeout


【解决方案1】:

test 做的第一件事是清除 test2 超时。这将在timeSec 之后发生。 test2 永远不会被执行,因为它会在 timeSec * 2 之后运行,但在中场休息时会被清除。 只有在成功执行 test 将要执行的任何操作后,您才应该清除 test2

var timeSec=2000;

var test = setTimeout(function() {
      jQuery('.next',curdoc)[0].click();
      if(successful()) {
          clearTimeout(test2);
      }
}, timeSec);
var test2 = setTimeout(function() {
          // do something else
}, timeSec+timeSec);

【讨论】:

    【解决方案2】:

    你为什么不试试try-catch?。

    var test = setTimeout(function() {
              try {
                jQuery('.next',curdoc)[0].click();
              }
              catch(err) {
                setTimeout(function() {
                  alert('fallback');
                }, timeSec+timeSec);
              }
        }, timeSec);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多