Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Melambatkan Pelaksanaan Kod selama 5 Saat Selepas Menetapkan Tamat Masa?

Bagaimanakah Saya Boleh Melambatkan Pelaksanaan Kod selama 5 Saat Selepas Menetapkan Tamat Masa?

Barbara Streisand
Barbara Streisandasal
2024-10-26 03:26:27328semak imbas

How Can I Delay Code Execution for 5 Seconds After Setting a Timeout?

Menangguhkan Pelaksanaan Kod selama 5 Saat

Kod yang disediakan cuba untuk melambatkan pelaksanaan operasi selama 5 saat menggunakan fungsi setTimeout:

<code class="javascript">function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

Walau bagaimanapun, kod segera menyemak keadaan newState == -1 selepas menjadualkan tamat masa, mengalahkan kelewatan yang dimaksudkan.

Penyelesaian Penyemak Imbas/Node.js

Penyelesaian yang betul melibatkan penggunaan tak segerak teknik pengaturcaraan untuk menangguhkan pelaksanaan pernyataan if sehingga selepas 5 saat berlalu. Untuk penyemak imbas, anda boleh menggunakan sintaks async/waiit:

<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>

Untuk Node.js 16 dan ke atas, anda boleh memanfaatkan setTimeout berasaskan janji terbina dalam:

<code class="javascript">import { setTimeout } from "timers/promises";

const stateChange = async (newState) => {
  await setTimeout(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

Ingat untuk menyemak sokongan penyemak imbas untuk versi async/wait dan Node.js untuk setTimeout berasaskan janji terbina dalam.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melambatkan Pelaksanaan Kod selama 5 Saat Selepas Menetapkan Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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