2016-04-01 11 views
0

Ich habe ein Problem mit setzen und löschen Timeout in Javascript. Ich möchte für var test var test2 als Backup setzen, aber wenn der Test funktioniert ich habe die test22 setTimeout Funktion der erste löscht die zweite Javascript

var timeSec=2000; 

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

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

test2 Timeout wird nie ausgeführt. –

+0

in meinem Fall ist es ein Firefox-Plugin. aber die Website, wo ich dieses Plugin verwende, ist manchmal fehlerhaft ... – Keeper01

+0

Was meinst du mit "wenn der Test funktioniert"? Wie übersetzt sich das in Code? Es gibt keine Prüfungen in 'var test' ... also wird' test2' niemals ausgeführt ... –

Antwort

2

Das erste, was test tut, ist das Löschen des test2 Timeout zu löschen. Dies geschieht nach timeSec. test2 wird nie ausgeführt werden, da es nach timeSec * 2 ausgeführt wird, aber die Halbzeit in freigegeben wird. Sie sollten test2 löschen nur nach erfolgreicher Ausführung von was auch immer test tun wird.

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

Warum versuchen Sie nicht mit try-catch?.

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