JavaScript-də Web Worker axını necə yaratmaq olar?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də Web Worker yaratmaq üçün Worker konstruktorundan istifadə olunur, bu, ayrı bir iş parçacığında işləyən skriptin yolunu qəbul edir.
const worker = new Worker('path/to/worker.js');
Worker skripti (worker.js) başqa bir qlobal kontekstdə işləyir və DOM və ya qlobal window obyektinə giriş imkanı yoxdur. Əsas skript və worker arasında məlumat mübadiləsi üçün postMessage() metodları və onmessage hadisə işləyicisi istifadə olunur.
Əsas skriptdə:
const worker = new Worker('worker.js');
// Worker-ə məlumat göndərmək
worker.postMessage({ data: 'Əsas axından salam!' });
// Worker-dən gələn mesajları işləmək
worker.onmessage = function(event) {
console.log('Worker-dən alınan:', event.data);
};
// Worker xətalarını işləmək (istəyə bağlı)
worker.onerror = function(error) {
console.error('Worker-də xəta:', error);
};
// Worker-ı dayandırmaq
// worker.terminate();
Worker skriptində (worker.js):
// Əsas axından gələn mesajları işləmək
self.onmessage = function(event) {
console.log('Worker-də alınan:', event.data);
// Uzun müddətli əməliyyat yerinə yetirmək (nümunə!)
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// Nəticəni geri göndərmək
self.postMessage({ result: result, originalData: event.data });
};
// Worker daxilində xətaları işləmək (istəyə bağlı)
self.onerror = function(error) {
console.error('Worker-də xəta:', error);
};
// Worker digər skriptləri idxal edə bilər
// importScripts('utils.js', 'helper.js');
Web Workers resursdan intensiv hesablamaları ayrıca iş parçacığına köçürməyə imkan verir, bu da əsas UI iş parçacığının bloklanmasının qarşısını alır və tətbiqin cavabvermə qabiliyyətini artırır. Qeyd etmək lazımdır ki, worker-lar DOM, window, document, localStorage və ya sessionStorage-a birbaşa girişə malik deyil. Məlumat mübadiləsi dəyərlərin kopyalanması və ya böyük həcmdə məlumatların ötürülməsi zamanı performansı artırmaq üçün Transferable obyektlərindən istifadə etməklə həyata keçirilir.