提供されたコードは、setTimeout 関数を使用して操作の実行を 5 秒遅延させようとします:
<code class="javascript">function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
ただし、コードはタイムアウトをスケジュールした後すぐに条件 newState == -1 をチェックし、意図した遅延を無効にします。
適切な解決策には、非同期の利用が含まれます。 5 秒が経過するまで if ステートメントの実行を延期するプログラミング手法。ブラウザーの場合、async/await 構文を使用できます:
<code class="javascript">// Utility function const delay = ms => new Promise(res => setTimeout(res, ms)); // Function to wait 5 seconds before checking newState const stateChange = async (newState) => { await delay(5000); if (newState == -1) { alert('VIDEO HAS STOPPED'); } };</code>
Node.js 16 以降の場合、組み込みの Promise ベースの setTimeout を利用できます:
<code class="javascript">import { setTimeout } from "timers/promises"; const stateChange = async (newState) => { await setTimeout(5000); if (newState == -1) { alert('VIDEO HAS STOPPED'); } };</code>
ブラウザーの async/await サポートと、組み込みの Promise ベースの setTimeout の Node.js バージョンを必ず確認してください。
以上がタイムアウトを設定した後にコードの実行を 5 秒遅らせるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。