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

Bagaimanakah Saya Boleh Mencipta Pemasa Tepat dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-25 07:19:33
asal
157 orang telah melayarinya

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);
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan