Sobes.tech
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 va onmessage handler yordamida amalga oshadi.
  • Cheklovlar: Workerlar DOM, window obyekti va brauzerning boshqa global obyektlariga kirish imkoniga ega emas. Ular navigator, location, XMLHttpRequest, setTimeout, setInterval, fetch, WebSockets va 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.