Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mencipta Pemasa Tepat dalam JavaScript?
Mencipta Pemasa Tepat dalam JavaScript
Menentukan selang masa yang tepat dalam JavaScript boleh mencabar kerana sifat setTimeout() dan setInterval() yang tidak tepat ).
Ketidaktepatan setTimeout() dan setInterval()
setTimeout() dan setInterval() bergantung pada mekanisme penjadualan penyemak imbas, yang boleh dipengaruhi oleh sumber sistem dan aktiviti penyemak imbas. Kebolehubahan yang wujud ini boleh membawa kepada ketidakkonsistenan dan pemasaan yang tidak boleh dipercayai, seperti yang ditunjukkan dalam contoh yang diberikan.
Penyelesaian: Menggunakan Objek Tarikh
Untuk mencipta pemasa yang tepat, pertimbangkan untuk menggunakan Tarikh object's now() kaedah untuk mendapatkan semula cap masa milisaat semasa. Pendekatan ini memberikan ketepatan yang lebih baik berbanding kaedah berasaskan panggil balik.
Pelaksanaan Pemasa Mudah:
Untuk senario pemasaan asas, anda boleh menjejaki perbezaan masa secara eksplisit menggunakan pendekatan berikut :
var start = Date.now(); setInterval(function() { var delta = Date.now() - start; // milliseconds since start ... output(Math.floor(delta / 1000)); // in seconds }, 1000);
Kaedah ini menjejaki perbezaan masa sejak permulaan pemasa. Untuk mengelakkan potensi lonjakan nilai, mengemas kini selang dengan lebih kerap (cth., setiap 100ms) disyorkan.
Pemasa Penyesuaian Kendiri
Untuk selang masa yang tepat dan tidak hanyut, anda boleh melaksanakan pemasa pelarasan kendiri. Pemasa ini menyesuaikan kelewatan untuk setiap tamat masa berulang berdasarkan masa berlalu sebenar:
var interval = 1000; // ms var expected = Date.now() + interval; setTimeout(step, interval); function step() { var dt = Date.now() - expected; // drift ... expected += interval; setTimeout(step, Math.max(0, interval - dt)); // adjust delay for drift }
Pendekatan ini memantau hanyut masa dan mengimbangi sebarang ketidakkonsistenan, memastikan rentak pemasaan yang lebih tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Pemasa Tepat dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!