Jeda dalam Pelaksanaan: Melaksanakan Penantian 5 Saat
Dalam kod JavaScript anda, anda menghadapi masalah dengan pemasaan fungsi tertentu. Anda berhasrat untuk menangguhkan pelaksanaan blok kod selama 5 saat sebelum menilai syarat.
Kod yang anda berikan:
<code class="js">function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
tidak mencapai gelagat yang anda inginkan kerana setTimeout fungsi sebenarnya tidak melambatkan pelaksanaan pernyataan if. Sebaliknya, ia menjadualkan fungsi panggil balik untuk dilaksanakan selepas 5000 milisaat, tetapi pernyataan if dilaksanakan serta-merta.
Untuk menyelesaikan masalah ini, anda boleh memanfaatkan teknik pengaturcaraan tak segerak dalam JavaScript, yang menyediakan cara untuk menjeda aliran pelaksanaan dan sambung lagi nanti. Berikut ialah dua pendekatan yang boleh menangani keperluan anda:
Penyelesaian Berasaskan Pelayar
<code class="js">const delay = ms => new Promise(res => setTimeout(res, ms)); async function stateChange(newState) { await delay(5000); console.log("Waited 5s before checking condition"); if (newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
Dalam penyelesaian ini, kami mentakrifkan fungsi utiliti yang dipanggil kelewatan yang mencipta janji yang diselesaikan selepas bilangan milisaat yang ditentukan. Kata kunci async digunakan untuk menjadikan fungsi stateChange tidak segerak, membenarkannya menjeda pelaksanaan sehingga janji diselesaikan.
Penyelesaian Node.js
<code class="js">const { setTimeout } = require("timers/promises"); async function stateChange(newState) { await setTimeout(5000); console.log("Waited 5s before checking condition"); if (newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
Penyelesaian ini menggunakan Fungsi setTimeout terbina dalam Node.js yang mengembalikan janji, membolehkan anda menjeda pelaksanaan sehingga janji diselesaikan. Kata kunci async digunakan seperti dalam contoh sebelumnya.
Atas ialah kandungan terperinci Bagaimana untuk Menjeda Pelaksanaan JavaScript selama 5 Saat Sebelum Menilai Keadaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!