Cara Membuat Janji daripada setTimeout
Mencipta Janji Asas untuk setTimeout
;<🎜 Untuk membuat janji bahawa async boleh kembali selepas setTimeout panggilan balik menyala, kita boleh membalut fungsi setTimeout dalam pembina janji, seperti yang dilihat dalam coretan di bawah:
</p>
<p>fungsi setTimeoutReturnPromise(delay) {<br> return new Promise((resolve ) => {<br></p>
<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);
});
}
Fungsi ini mengambil kelewatan sebagai hujah dan mengembalikan janji. Janji akan diselesaikan selepas kelewatan yang ditentukan telah berlalu dan panggilan balik fungsi setTimeout akan dilaksanakan.
Menggunakan Janji dengan async
Sekarang, fungsi async kami boleh menggunakan fungsi setTimeoutReturnPromise untuk mencipta janji bahawa ia boleh kembali. Ini membolehkan kami menggunakan kaedah then() untuk melaksanakan kod selepas panggilan balik setTimeout telah digunakan:
<p>async(function() {<br> setTimeoutReturnPromise(5000).then( () => {<br></p>
<pre class="brush:php;toolbar:false">console.log("async called back");
});
});
Mengemas kini untuk ES2015 dan Seterusnya
Sejak pengenalan ES2015 dan JavaScript moden, janji telah menjadi ciri terbina dalam. Sintaks telah dipermudahkan, seperti yang ditunjukkan di bawah:
<p>fungsi kemudian(delay) {<br> return new Promise((resolve) => {<br></p>
<pre class="brush:php;toolbar:false">setTimeout(resolve, delay);
});
}
Menggunakan fungsi anak panah dan argumen nilai resolusi pilihan, kod itu boleh dipekatkan lagi:
const kemudian = (kelewatan, nilai) => Janji baharu(menyelesaikan => setTimeout(menyelesaikan, menangguhkan, nilai));
Janji Boleh Dibatalkan (pilihan)
Jika anda ingin membatalkan tamat masa, anda boleh mengembalikan objek dengan janji dan pembatalan kaedah:
const kemudian = (kelewatan, nilai) => {
biarkan pemasa = 0;
biarkan tolak = null;
const promise = new Promise((resolve, _reject) => {
reject = _reject;
timer = setTimeout(resolve, delay, value);
}); kembali {
get promise() { return promise; },
cancel() {
if (timer) {
clearTimeout(timer);
timer = 0;
reject();
reject = null;
}
}
};};
Pendekatan ini membolehkan anda membatalkan tamat masa dan menolak janji menggunakan kaedah cancel(). Atas ialah kandungan terperinci Bagaimana untuk Mencipta dan Mengurus Janji Menggunakan setTimeout dalam JavaScript?. 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