3秒ごとに実行されるjavascript関数があります。関数の前のインスタンスがすでに実行されている場合は何もしませんか?同じ関数がすでに実行されている場合は何もしない
答えて
私はあなたが重い機能を実行していると仮定してsetInterval
と前の1つが完了していない場合は1つの目をスキップします。代わりに
function yourfoo() {
// code
}
setInterval(yourfoo, 3000);
行うのその後
、:
function yourfoo() {
// code
setTimeout(yourfoo, 3000);
}
setTimeout(yourfoo, 3000);
これは、以前の1が完了するまで次の呼び出しが予定されていない保証します。
1つのsetInterval型の呼び出された呼び出しは、呼び出し元のキューにすでに存在する場合は削除されることに注意してください。したがって、書き換えは、指定されたタイムアウトよりもコードの終了に時間がかかる場合に、コードをバックツーバックで実行したくない場合にのみ必要です。さもなければそれは重要ではない。いずれにしても、JavaScriptのシングルスレッドの性質のため、コードは同時に2回実行されることはありません。 – koenpeters
は落とされず、単にキューに入れられました – Raynos
その簡単な解決策!巨大な感謝 – Boos93
はい。
これはデフォルトで行われます。
JavaScriptと呼ばれるのはシングルスレッドです。
2つの機能を同時に実行することはできません。
おそらくsetInterval
を使用しています。現在実行中のコードが終了するまで、関数呼び出しを内部的にバッファします。
より高いスコープで関数の実行状態を示すbooleanフラグを定義し、それに応じてそれをオンまたはオフに切り替えることができます。
それのための必要はありません。 2つの機能を同時に実行することはできません。このようなロック機構は必要ありません。 – Raynos
JavaScriptはシングルスレッドです。つまり、指定された時間に1ブロックのJavaScriptのみが実行されます。したがって、タイマーが起動しても、コードの実行は次の使用可能な瞬間まで待機します。重要なのは、setIntervalを1回だけ使用する場合は、「ファイア」がキューに入れられ、キューにこのタイプの間隔がなくなるまで他のすべてのキューが削除されることです。ここで
が、これはjQueryの父ジョンResig氏によってどのように動作するかの偉大な説明です:http://ejohn.org/blog/how-javascript-timers-work/
その方法は、あなたは、コードの実行を次のみ行われることを保証しているので、あなたは、setTimeoutメソッドを使用するようにコードを書き換えることができ少なくとも指定されたミリ秒数を待った後(実行がブロックされている場合はさらに多くなる可能性があります)。 setIntervalを使用すると、コードの終了に時間がかかる場合、ブロッキングによってコードのバックツーバック実行が発生する可能性があります。だから、
、バックツーバックの実行を防ぐために、このような何かを:
var nrOfMillisecondsToWait = 200;
setTimeout(function() {
.. your code here
}, nrOfMillisecondsToWait);
- 1. 関数の場合 - 何もしない場合は何もしない
- 2. ストアドプロシージャが何も実行しない場合のORAコードは何ですか?
- 3. イメージがロードされていない場合は何かを実行する(jquery)
- 4. 日付が同じであれば、関数を実行してください
- 5. フォームに何らかのアクションが何もない場合に実行する
- 6. RSSフィードが変更されていない場合は何もしない
- 7. JQuery - チェックボックスがチェックされている場合、関数を実行します。
- 8. submit関数がangularjsで実行されていなくても、条件を満たす場合
- 9. javascriptの関数が何も返さない場合、なぜですか?
- 10. 変数が何もない場合のテストは何ですか?
- 11. 角度2 ngSubmitが実行されていない場合でも実行されます
- 12. else文がスキップされて何もしない場合にネストされます
- 13. 先行する関数が失敗した場合、jQuery関数が実行されないようにするにはどうすればよいですか?
- 14. jQuery:$( '#id')が何も一致しない場合に返されるものは?
- 15. 文が実行されない場合
- 16. モーダルが同じスコープに接続されている場合、関数から$ uibModalを閉じる方法は?
- 17. Visual Studio 2015:デザイナーと同じように実行してもアプリケーションが同じに表示されない
- 18. ステートメントが正しく実行されていない場合
- 19. ForEach内でステートメントが実行されていない場合
- 20. mt_rand()が同じ時刻に実行された場合、結果は同じになりますか?
- 21. PostgreSQL upsert:フィールドが変更されない場合は何も行いません
- 22. 同じ行に2つのdivが表示されない場合は、
- 23. セクションがチェックされていない場合、NSISは何もしません。
- 24. 同じアプリが複数回実行されています
- 25. チェックボックスがチェックされている場合は、「何か」を実行し
- 26. 集計関数が指定されていない場合、MySQLは何を行いますか?
- 27. 変数に変数が含まれている場合、何かを実行
- 28. Javascript - 過去の日付が表示されている場合は関数を実行しない
- 29. intに特定の値がある場合は、何かを実行しない場合は何かを実行してください
- 30. なぜブロックが実行されていない場合
コードを...... ????? – noob
Webワーカーを使用しない限り、JavaScriptコードは同時に実行されません...そうですか? –