Saya mencari scenarious dunia nyata untuk menggunakan Web Workers API .
javascript
html
web-worker
Sergey Ilinsky
sumber
sumber
Jawaban:
John Resig (dari jQuery fame) memiliki banyak contoh menarik tentang menggunakan pekerja web di sini - game, grafik, crypto.
Penggunaan lain adalah Web I / O - dengan kata lain, polling URL di latar belakang. Dengan begitu Anda tidak memblokir UI menunggu hasil polling.
Penggunaan praktis lainnya: di Bespin, mereka menggunakan Pekerja Web untuk melakukan penyorotan sintaksis, yang Anda tidak ingin memblokir pengeditan kode Anda saat Anda menggunakan aplikasi.
Dari Mozilla : Salah satu cara yang berguna para pekerja adalah memungkinkan kode Anda untuk melakukan perhitungan intensif prosesor tanpa memblokir utas antarmuka pengguna.
Sebagai contoh praktis, pikirkan aplikasi yang memiliki tabel besar #s (ini adalah dunia nyata, BTW - diambil dari aplikasi yang saya programkan ~ 2 tahun yang lalu). Anda dapat mengubah satu # dalam tabel melalui bidang input dan sekelompok angka lain dalam kolom yang berbeda dapat dihitung ulang dalam proses yang cukup intensif.
Alur kerja yang lama adalah: Ubah #. Pergi mendapatkan kopi sementara JavaScript berderak melalui perubahan ke nomor lain dan halaman web tidak responsif selama 3 menit - setelah saya mengoptimalkannya ke neraka dan kembali. Dapatkan Kembali dengan kopi. Ubah yang kedua. Ulangi berkali-kali. Klik tombol SIMPAN.
Alur kerja baru dengan para pekerja bisa menjadi: Ubah #. Dapatkan pesan status bahwa ada sesuatu yang sedang dihitung ulang tetapi Anda dapat mengubah #s lainnya. Ubah lebih banyak #s. Setelah selesai diubah, tunggu hingga perubahan status menjadi "semua perhitungan selesai, kini Anda dapat meninjau # terakhir dan menyimpan".
sumber
Saya telah menggunakannya untuk mengirim data dalam jumlah besar dari browser ke server. Jelas, Anda dapat melakukan ini dengan panggilan AJAX biasa, tetapi jika ini mengambil salah satu koneksi berharga per nama host. Juga, jika pengguna melakukan transisi halaman selama proses ini (misalnya mengklik tautan), objek JavaScript Anda dari halaman sebelumnya hilang dan Anda tidak dapat memproses panggilan balik. Ketika pekerja web digunakan, aktivitas ini terjadi di luar jalur, sehingga Anda memiliki jaminan yang lebih baik bahwa itu akan selesai.
sumber
Kasus Penggunaan lain:
Mengkompresi / menghapus kompresi file di latar belakang, jika Anda memiliki banyak gambar dan file media lain yang dipertukarkan dari server dalam format terkompresi.
sumber
<canvas>
), Anda bisa mendapatkan data gambar dalam format terkompresi (yaitu png). Maksud saya bukanlah bahwa tidak pernah tepat untuk mengompres di JS; maksud saya adalah bahwa dalam kebanyakan kasus , tidak , dan untuk kebanyakan kasus - terutama berurusan dengan gambar, yang dibicarakan jawaban ini - ada alternatif yang lebih baik untuk menggulirkan kompresi Anda sendiri.