Middle
JavaScript-də Web Worker axını necə yaratmaq olar?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də Web Worker axını Worker konstruktoru vasitəsilə yaradıla bilər.
// Yeni Web Worker yaradırıq və JS faylın yolunu keçiririk,
// bu fayl ayrıca axında icra olunacaq.
const worker = new Worker('worker.js');
worker.js faylında (və ya worker yaradılarkən göstərilən başqa faylda) kod ayrıca axında icra olunacaq.
// worker.js
// Əsas axından göndərilən mesajların emalı
self.onmessage = function(event) {
const receivedData = event.data;
console.log('Əsas axından alınan mesaj:', receivedData);
// Mesajı geri əsas axına göndərmək
const responseData = { message: 'Worker-dən salam!', data: receivedData };
self.postMessage(responseData);
};
// İstəyə bağlı olaraq, səhv idarəetməsi əlavə oluna bilər
self.onerror = function(error) {
console.error('Worker-də xəta:', error);
};
Əsas axında (worker yaradıldığı yerdə), worker ilə qarşılıqlı əlaqə qurmaq olar:
// main.js
const worker = new Worker('worker.js');
// Web Worker-ə mesaj göndərmək
worker.postMessage({ command: 'start', payload: 'some data' });
// Web Worker-dən alınan mesajları işləmək
worker.onmessage = function(event) {
const receivedData = event.data;
console.log('Worker-dən alınan mesaj:', receivedData);
};
// Web Worker-də səhvləri idarə etmək
worker.onerror = function(error) {
console.error('Main axında Worker xətası:', error);
};
// Web Worker-i bağlamaq (istəyə bağlı)
// worker.terminate();
Əsas nöqtələr:
- Əlaqə: Əsas axın və worker arasında məlumat mübadiləsi
postMessage()metodları vəonmessagehandler vasitəsilə həyata keçirilir. - Məhdudiyyətlər: Worker-lər DOM-a,
windowobyektinə və brauzerin digər qlobal obyektlərinə girişə malik deyil. Onlarnavigator,location,XMLHttpRequest,setTimeout,setInterval,fetch,WebSocketsvə digər obyektlərə məhdud girişə malikdir. - İzolyasiya: Worker-dəki kod ayrıca axında icra olunur, bu da əsas axını bloklamadan və performansı artırır, xüsusən resurslara intensiv hesablamalar zamanı.