Middle
Veb işçiləri nədir və onlar nə üçün lazımdır?
sobes.tech Süni İntellekt
AI-dan cavab
Veb işçiləri, brauzerin əsas UI axışından ayrılmış arxa plan axışında JavaScript kodunu 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ı yakalayır, 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).