API Pekerja Web HTML


Pekerja web adalah JavaScript yang berjalan di latar belakang, tanpa memengaruhi kinerja halaman.


Apa itu Pekerja Web?

Saat menjalankan skrip di halaman HTML, halaman menjadi tidak responsif hingga skrip selesai.

Pekerja web adalah JavaScript yang berjalan di latar belakang, terlepas dari skrip lain, tanpa memengaruhi kinerja halaman. Anda dapat terus melakukan apa pun yang Anda inginkan: mengklik, memilih sesuatu, dll., saat pekerja web berjalan di latar belakang.


Dukungan Peramban

Angka-angka dalam tabel menentukan versi browser pertama yang sepenuhnya mendukung Pekerja Web.

API
Web Workers 4.0 10.0 3.5 4.0 11.5

Contoh Pekerja Web HTML

Contoh di bawah ini membuat pekerja web sederhana yang menghitung angka di latar belakang:

Contoh

Count numbers:


Periksa Dukungan Pekerja Web

Sebelum membuat pekerja web, periksa apakah browser pengguna mendukungnya:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Buat File Pekerja Web

Sekarang, mari kita buat pekerja web kita di JavaScript eksternal.

Di sini, kami membuat skrip yang diperhitungkan. Script disimpan di file "demo_workers.js":

var i = 0;

function timedCount() {
  i = i + 1;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

Bagian penting dari kode di atas adalah postMessage()metode - yang digunakan untuk mengirim pesan kembali ke halaman HTML.

Catatan: Biasanya pekerja web tidak digunakan untuk skrip sederhana seperti itu, tetapi untuk tugas yang lebih intensif CPU.


Buat Objek Pekerja Web

Sekarang kita memiliki file pekerja web, kita perlu memanggilnya dari halaman HTML.

Baris berikut memeriksa apakah pekerja sudah ada, jika tidak - itu membuat objek pekerja web baru dan menjalankan kode di "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Kemudian kita dapat mengirim dan menerima pesan dari web worker.

Tambahkan event listener "onmessage" ke web worker.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Saat pekerja web memposting pesan, kode di dalam event listener dieksekusi. Data dari web worker disimpan di event.data.


Menghentikan Pekerja Web

Saat objek pekerja web dibuat, objek tersebut akan terus mendengarkan pesan (bahkan setelah skrip eksternal selesai) hingga dihentikan.

Untuk menghentikan pekerja web, dan sumber daya browser/komputer gratis, gunakan terminate()metode:

w.terminate();

Gunakan kembali Web Worker

Jika Anda menyetel variabel pekerja ke undefined, setelah dihentikan, Anda dapat menggunakan kembali kode:

w = undefined;

Kode Contoh Pekerja Web Lengkap

Kita telah melihat kode Worker di file .js. Di bawah ini adalah kode untuk halaman HTML:

Contoh

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
var w;

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("demo_workers.js");
    }
    w.onmessage = function(event) {
      document.getElementById("result").innerHTML = event.data;
    };
  } else {
    document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
  }
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Pekerja Web dan DOM

Karena pekerja web berada di file eksternal, mereka tidak memiliki akses ke objek JavaScript berikut:

  • objek jendela
  • objek dokumen
  • Objek induk