Kita semua tahu bahwa browser mengeksekusi kode js dalam satu thread. Ketika langkah halaman dijalankan, halaman tidak dapat merespons apa pun sampai langkah tersebut berakhir.
WebWorkers adalah kode js yang berjalan di latar belakang, tidak bergantung pada skrip lain dan tidak akan memengaruhi performa halaman. Kita dapat terus melakukan apapun yang kita inginkan: klik, pilih konten, dll., sementara WebWorkers berjalan di latar belakang.
Pekerja web didukung oleh semua browser utama kecuali Internet Explorer.
Langkah pertama: menghasilkan pekerja.Panggil konstruktor Worker() dan tentukan URI skrip yang akan dijalankan di thread pekerja. Misalnya, halaman saat ini menetapkan bahwa skrip yang dieksekusi oleh thread pekerja adalah script-worker.js.
var myWorker = Pekerja baru(script-worker.js);
Di script-worker.js kita dapat mengeksekusi kode tambahan, dan eksekusi kode ini tidak akan memengaruhi halaman untuk melakukan hal lain yang ingin Anda lakukan, dan kedengarannya bagus.
Langkah 2: Teruskan datanya.Halaman tersebut dapat berinteraksi dengan pekerja untuk mentransfer data, sehingga pekerja dapat menghitung secara diam-diam tanpa mempengaruhi kemampuan halaman untuk melakukan hal-hal yang berarti.
//[Kode halaman utama]myWorker.postMessage(data-from-mainpage);//[kode pekerja]onmessage = function (oEvent) { console.log(Data yang dikirim dari halaman utama adalah: +oEvent.data)) ;
Di atas adalah situasi [halaman utama mengirimkan data ke skrip pekerja], ya, Anda melihat postMessage yang sangat ramah, oke, saya suka hal ini.
//[Kode halaman utama] myWorker.onmessage = function (oEvent) { console.log(Data yang dikirim oleh skrip pekerja adalah: +oEvent.data) }; //[Kode pekerja]postMessage(data-from-) halaman utama );
Di atas adalah situasi [skrip pekerja mengirimkan data ke halaman utama]. Masih sangat sederhana, tetapi ini hanyalah API. Kuncinya adalah penggunaan yang cerdas dan bermanfaat.
Selain itu, mungkin ada kesalahan dalam eksekusi pekerja, dan halaman utama menampilkan:
myWorker.onerror=fungsi(oEvent){};
Anda dapat memantau kesalahan pekerja.
Langkah 3: Poin penting.Thread pekerja dapat melakukan tugas tanpa mengganggu UI. Kode JavaScript yang dieksekusi sepenuhnya berada dalam cakupan lain dan tidak berbagi cakupan dengan kode di halaman web saat ini.
Metode importScripts() disediakan dalam lingkup global Pekerja, yang menerima satu atau lebih URL yang menunjuk ke file JavaScript. Proses pemuatan dilakukan secara asinkron.
importScripts() hanya akan berlaku jika Anda memberikan URI absolut, dan proses eksekusinya juga tidak sinkron.
Saat kita membuat objek WebWorkers, objek tersebut akan terus mendengarkan pesan (bahkan setelah skrip eksternal selesai) hingga objek tersebut dihentikan. Gunakan metode myWorker.terminate() untuk menghentikan WebWorkers dan melepaskan sumber daya browser/komputer.
Langkah 4: Batasan penting.1. Tidak dapat mengakses node DOM, variabel global atau fungsi global, tidak dapat memanggil fungsi seperti alert() atau konfirmasi, dan tidak dapat mengakses variabel global browser seperti jendela dan dokumen;
2. Namun, Javascript di Web Worker masih bisa menggunakan fungsi seperti setTimeout() dan setInterval(), dan juga bisa menggunakan objek XMLHttpRequest untuk komunikasi Ajax.
Di atas adalah keseluruhan isi artikel ini, saya harap dapat bermanfaat untuk pembelajaran semua orang. Saya juga berharap semua orang mendukung VeVb Wulin Network.