Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mencipta Pemasa Tepat dalam JavaScript?

Bagaimanakah Saya Boleh Mencipta Pemasa Tepat dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-25 07:19:33163semak imbas

How Can I Create Accurate Timers in 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!

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