Solusi: setInterval tidak dapat berjalan normal di latar belakang browser.
Referensi
WorkerApa itu "Pekerja Web"
"Web Worker" menyediakan cara sederhana agar konten web menjalankan skrip di thread latar belakang. Thread dapat melakukan tugas tanpa mengganggu antarmuka pengguna. Selain itu, mereka dapat melakukan I / O menggunakan XMLHttpRequest. Setelah dibuat, seorang pekerja dapat mengirim pesan ke kode JavaScript yang membuatnya, dengan memposting pesan ke event handler yang ditentukan oleh kode (dan sebaliknya).
Instruksi
Dalam contoh kode di bawah ini, kami menerapkan pengatur waktu paling sederhana dan membiarkannya memicu setiap 100 milidetik.
var timmer = new Worker(
URL.createObjectURL(
new Blob(
[
"onmessage=function(event){setInterval(function(){postMessage(1);},100)}",
],
{ type: "application/javascript" }
)
)
);
timmer.onmessage = function (event) {
console.log("get message");
};
timmer.postMessage("start");
Penggunaan standar
Pada contoh di atas, kita membuat alamat menggunakan createObjectURL. Karena kode yang perlu kita jalankan relatif sederhana, metode ini akan lebih ringkas. Ketika kode dalam tugas yang perlu kita jalankan lebih rumit, kita dapat menulis tugas secara terpisah sebagai file js independen. Untuk detailnya, silakan lihat kode berikut. Ada pendahuluan yang lebih detail, Anda bisa merujuk ke bahan referensi di bagian atas artikel.
var timmer = new Worker('worker.js');