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

2 setTimeout function the first one clears the second one javascript

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

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

你为什么不试试 try-catch

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