2 setTimeout函数第一个清除第二个javascript

时间:2016-04-01 13:38:40

标签: javascript jquery settimeout cleartimeout

我在javascript中设置和清除Timeout时遇到问题。 我想将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);

2 个答案:

答案 0 :(得分:2)

test做的第一件事是清除test2超时。这将在timeSec之后发生。 test2将永远不会被执行,因为它将在timeSec * 2之后运行,但会在一半时间内被清除。 只有在成功执行test2之后才能清除test

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);

答案 1 :(得分:1)

为什么不试试try-catch

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