Rumah >hujung hadapan web >tutorial js >Bagaimana Menunggu 5 Saat Sebelum Melaksanakan Baris Seterusnya dalam JavaScript?
Dalam JavaScript, fungsi setTimeout() menjadualkan fungsi untuk dilaksanakan selepas bilangan milisaat yang ditetapkan. Walau bagaimanapun, ia tidak menghentikan pelaksanaan kod, bermakna baris kod seterusnya akan dilaksanakan sejurus selepas panggilan setTimeout(), tanpa mengira kelewatan yang ditentukan.
Kod anda bertujuan untuk menunggu 5 saat sebelum menyemak sama ada newState adalah sama dengan -1. Walau bagaimanapun, memandangkan setTimeout() tidak menyekat kod, semakan berlaku serta-merta, sebelum kelewatan 5 saat berlaku.
Untuk mencapai tingkah laku yang diingini, anda perlu menggunakan mekanisme yang boleh menjeda pelaksanaan kod anda selama 5 saat. Terdapat dua pendekatan moden yang boleh anda pertimbangkan:
ES6 memperkenalkan sintaks async/wait, yang membolehkan anda menulis kod tak segerak dalam gaya yang lebih segerak. Dengan menandakan fungsi anda sebagai tidak segerak, anda boleh menggunakan kata kunci await untuk menjeda pelaksanaan sehingga janji diselesaikan.
<code class="javascript">const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); const stateChange = async newState => { await delay(5000); if (newState === -1) { alert('VIDEO HAS STOPPED'); } };</code>
Dalam Node.js 16, modul pemasa/janji menyediakan versi setTimeout berasaskan janji. Ini membolehkan anda menjeda pelaksanaan dan menunggu kelewatan selesai sebelum meneruskan.
<code class="javascript">import { setTimeout } from "timers/promises"; const stateChange = async newState => { await setTimeout(5000); if (newState === -1) { console.log('VIDEO HAS STOPPED'); } };</code>
Kedua-dua pendekatan ini akan memastikan bahawa pelaksanaan kod dihentikan selama 5 saat sebelum semakan newState dilakukan.
Atas ialah kandungan terperinci Bagaimana Menunggu 5 Saat Sebelum Melaksanakan Baris Seterusnya dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!