Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menjeda Pelaksanaan JavaScript selama 5 Saat Sebelum Menilai Keadaan?

Bagaimana untuk Menjeda Pelaksanaan JavaScript selama 5 Saat Sebelum Menilai Keadaan?

DDD
Lepaskan: 2024-11-02 00:16:31
asal
215 orang telah melayarinya

How to Pause JavaScript Execution for 5 Seconds Before Evaluating a Condition?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan