Saya memiliki setInterval
menjalankan sepotong kode 30 kali per detik. Ini berfungsi dengan baik, namun ketika saya memilih tab lain (sehingga tab dengan kode saya menjadi tidak aktif), setInterval
ini diatur ke keadaan siaga karena beberapa alasan.
Saya membuat test case yang disederhanakan ini ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Jika Anda menjalankan kode ini dan kemudian beralih ke tab lain, tunggu beberapa detik dan kembali, animasi berlanjut pada titik ketika Anda beralih ke tab lain. Jadi animasi tidak berjalan 30 kali per detik jika tab tidak aktif. Ini dapat dikonfirmasi dengan menghitung berapa kali setInterval
fungsi dipanggil setiap detik - ini tidak akan menjadi 30 tetapi hanya 1 atau 2 jika tab tidak aktif.
Saya kira ini dilakukan oleh desain untuk meningkatkan kinerja, tetapi apakah ada cara untuk menonaktifkan perilaku ini? Ini sebenarnya merupakan kerugian dalam skenario saya.
Date
. Sehingga ketika interval tidak menyala dengan cepat (untuk alasan ini atau lainnya) animasi menjadi semakin menyebalkan, tidak lebih lambat.
Date
objek untuk benar-benar melihat waktu telah berlalu.