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