Middle
JavaScriptda Web Worker oqimini qanday yaratish mumkin?
sobes.tech AI
AIdan javob
JavaScriptda Web Worker oqimini Worker konstruktor yordamida yaratish mumkin.
// Yangi Web Worker yaratamiz va JS faylga yo'lni o'tkazamiz,
// bu fayl alohida oqimda bajariladi.
const worker = new Worker('worker.js');
worker.js faylida (yoki worker yaratishda ko'rsatilgan boshqa faylda) kod alohida oqimda bajariladi.
// worker.js
// Asosiy oqimdan yuborilgan xabarlarni qayta ishlash
self.onmessage = function(event) {
const receivedData = event.data;
console.log('Asosiy oqimdan xabar olindi:', receivedData);
// Xabarni qaytadan asosiy oqimga yuborish
const responseData = { message: 'Worker dan salom!', data: receivedData };
self.postMessage(responseData);
};
// Xatoliklarni boshqarish uchun, istalgan holda, qo'shimcha qilish mumkin
self.onerror = function(error) {
console.error('Worker xatosi:', error);
};
Asosiy oqimda (worker yaratilgan joyda), worker bilan muloqot qilish mumkin:
// main.js
const worker = new Worker('worker.js');
// Web Worker ga xabar yuborish
worker.postMessage({ command: 'start', payload: 'some data' });
// Web Worker dan kelgan xabarlarni qabul qilish va ishlash
worker.onmessage = function(event) {
const receivedData = event.data;
console.log('Worker dan xabar:', receivedData);
};
// Web Worker xatoliklarini boshqarish
worker.onerror = function(error) {
console.error('Main oqimdagi Worker xatosi:', error);
};
// Web Worker ni tugatish (ixtiyoriy)
// worker.terminate();
Asosiy nuqtalar:
- Aloqa: Asosiy oqim va worker o'rtasida ma'lumotlar almashinuvi
postMessage()metodlari vaonmessagehandler yordamida amalga oshadi. - Cheklovlar: Workerlar DOM,
windowobyekti va brauzerning boshqa global obyektlariga kirish imkoniga ega emas. Ularnavigator,location,XMLHttpRequest,setTimeout,setInterval,fetch,WebSocketsva boshqa obyektlarga cheklangan kirishga ega. - Izolyatsiya: Worker ichidagi kod alohida oqimda bajariladi, bu asosiy oqimni bloklamaslikni ta'minlaydi va ishlash samaradorligini oshiradi, ayniqsa resursga og'ir hisoblashlar bajarilayotganda.