2016-04-01 9 views
0

javascriptでタイムアウトを設定してクリアするのに問題があります。 私はVARテスト のバックアップとしてのvar TEST2を設定したいが、テスト作品が、私はTEST2を削除する必要がある場合2 setTimeout関数最初のものが2番目の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タイムアウトは実行されません。私の場合は –

+0

です。それはFirefoxのプラグインです。しかし、私はこのプラグインを使用するウェブサイトは時々バギーです... – Keeper01

+0

"テストが動作する"とはどういう意味ですか?それはどのようにコードに変換されますか? 'var test'にはチェックがありません...' test2'は決して実行されません... –

答えて

2

testが最初に行うことがtest2タイムアウトをクリアしています。これはtimeSecの後に発生します。 test2timeSec * 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); 
1

try-catchで試してみませんか?

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