Middle
Veb ishchilari nima va ular nima uchun kerak?
sobes.tech AI
AIdan javob
Veb-işçilər, JavaScript kodunu brauzerin əsas UI axışından ayrılmış arxa plan axışında işə salmağın bir yoludur.
Məqsəd:
- Resurs tələbatlı hesablamaları əsas axışı bloklamadan yerinə yetirmək, bu da interfeysin donmasını qarşısını alır.
- Böyük məlumatların işlənməsi və ya uzunmüddətli əməliyyatların (məsələn, parsing, sıxışdırma, bəzi hallarda şəbəkə sorğuları) arxa planda həyata keçirilməsi.
- Veb tətbiqlərinin performansını və cavabvermə qabiliyyətini artırmaq.
Veb işçilərinin növləri:
- Dedicated Worker: Onu yaradan skriptlə əlaqəlidir.
- Shared Worker: Eyni domen daxilində müxtəlif pəncərələr və ya sekmələrdə işləyən bir neçə skript arasında paylaşa bilər.
- Service Worker: Şəbəkə sorğularını ələ keçirir, keşi idarə edir, offline giriş təmin edir, push bildirişlərini dəstəkləyir.
Dedicated Worker yaradılması və istifadəsi nümunəsi:
// main.js (əsas axış)
const worker = new Worker('worker.js');
// İşçiyə mesaj göndərmək
worker.postMessage('Çəkli hesablamaları başlat');
// İşçidən mesaj alma
worker.onmessage = function(event) {
console.log('İşçidən alınan:', event.data);
};
// worker.js (işçi kodu)
self.onmessage = function(event) {
console.log('İşçidə alınan:', event.data);
// Çəkli hesablamaların simulyasiyası
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Nəticəni əsas axışa geri göndərmək
self.postMessage('Hesablamalar tamamlandı, nəticə: ' + result);
};
Məhdudiyyətlər:
- DOM-ya birbaşa giriş yoxdur.
- Əsas axışın bəzi qlobal dəyişənləri (məsələn,
window,document) istifadə edilə bilməz. - Əlaqə, asinxron mesaj mübadiləsi vasitəsilə həyata keçirilir (
postMessagevəonmessage/addEventListener('message')). - Məlumatlar, kopyalama (structured clone algorithm) yolu ilə ötürülür, lakin böyük məlumatlar üçün
Transferable Objectsistifadə edilə bilər, bu da göndərməyi referansla həyata keçirir (orijinal axışda erişimi itirir).