Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Melambatkan Pelaksanaan Kod selama 5 Saat Selepas Menetapkan Tamat Masa?
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 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!