Pekerja web adalah ciri spesifikasi HTML5 yang membolehkan JavaScript dijalankan di latar belakang, bebas daripada benang utama aplikasi web. Pemisahan tugas ini membolehkan pemaju web melakukan operasi intensif secara komputasi tanpa memberi kesan kepada respons antara muka pengguna.
Untuk menggunakan pekerja web untuk pemprosesan latar belakang, anda biasanya akan mengikuti langkah -langkah ini:
worker.js
. INTEGANIATE PEKERJA : Dalam fail JavaScript utama anda, buat pekerja baru dengan menafikan objek Worker
dengan jalan ke skrip pekerja anda. Contohnya:
<code class="javascript">const myWorker = new Worker('worker.js');</code>
Hantar Mesej : Berkomunikasi dengan pekerja dengan menghantar mesej kepadanya menggunakan kaedah postMessage
. Pekerja boleh menerima mesej ini menggunakan pendengar acara untuk acara message
.
<code class="javascript">myWorker.postMessage({command: 'start', data: someData});</code>
Mengendalikan respons : Di benang utama, dengar mesej yang dihantar kembali dari pekerja menggunakan pendengar acara untuk acara message
.
<code class="javascript">myWorker.onmessage = function(e) { console.log('Message received from worker', e.data); };</code>
Tamatkan pekerja : Apabila anda selesai, anda boleh menamatkan pekerja dengan kaedah terminate
.
<code class="javascript">myWorker.terminate();</code>
Menggunakan pekerja web dengan cara ini membolehkan pemprosesan latar belakang berlaku tanpa membekukan atau melambatkan benang utama, dengan itu mengekalkan pengalaman pengguna yang lancar.
Pekerja web dapat meningkatkan prestasi aplikasi web dengan ketara dalam beberapa cara:
Jenis tugas tertentu sangat sesuai untuk pekerja web kerana sifat dan keperluan mereka:
Ya, pekerja web dapat berkomunikasi antara satu sama lain, proses yang difasilitasi oleh benang utama yang bertindak sebagai penyelaras. Begini bagaimana komunikasi ini dapat dicapai:
Benang utama sebagai hab : Benang utama boleh bertindak sebagai hab pusat, menerima mesej dari seorang pekerja dan menghantarnya kepada pekerja lain. Kaedah ini memerlukan benang utama untuk terlibat dalam proses komunikasi.
Di utas utama:
<code class="javascript">const worker1 = new Worker('worker1.js'); const worker2 = new Worker('worker2.js'); worker1.onmessage = function(e) { if (e.data.command === 'sendToWorker2') { worker2.postMessage(e.data.message); } }; worker2.onmessage = function(e) { if (e.data.command === 'sendToWorker1') { worker1.postMessage(e.data.message); } };</code>
Pekerja Bersama : Kaedah lain untuk komunikasi antara pekerja adalah melalui penggunaan pekerja bersama. Pekerja bersama boleh diakses oleh pelbagai skrip, yang membolehkan bahagian -bahagian yang berlainan aplikasi untuk berkomunikasi melalui seorang pekerja bersama.
Membuat pekerja bersama:
<code class="javascript">const sharedWorker = new SharedWorker('sharedWorker.js'); sharedWorker.port.onmessage = function(e) { console.log('Message received from shared worker', e.data); }; sharedWorker.port.postMessage({command: 'message', data: someData});</code>
Komunikasi pekerja ke pekerja langsung : Walaupun kurang biasa dan kurang mudah, mungkin pekerja berkomunikasi secara langsung menggunakan MessageChannel
dan MessagePort
. Pendekatan ini memerlukan menubuhkan saluran antara pekerja, yang mana benang utama dapat memudahkan.
Di utas utama:
<code class="javascript">const channel = new MessageChannel(); const worker1 = new Worker('worker1.js'); const worker2 = new Worker('worker2.js'); worker1.postMessage('connect', [channel.port1]); worker2.postMessage('connect', [channel.port2]);</code>
Dengan menggunakan kaedah ini, pekerja web dapat berkomunikasi dengan cekap antara satu sama lain, membolehkan senario pemprosesan latar belakang yang lebih kompleks dalam aplikasi web.
Atas ialah kandungan terperinci Apa itu pekerja web? Bagaimana anda menggunakannya untuk pemprosesan latar belakang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!