Sobes.tech
Middle

Web Workers nima va ular nima uchun kerak?

sobes.tech AI

AIdan javob

Web Workers resurslardan foydalanishni talab qiladigan operatsiyalarni fon oqimlarida bajarishga imkon beradi, bu esa JavaScriptning asosiy bajarish oqimini bloklamaydi va foydalanuvchi interfeysining chiroyli ishlashini ta'minlaydi. Bu sahifa qotib qolishini oldini oladi va ilovaning javob berish qobiliyatini, ayniqsa katta ma'lumotlar hajmi, hisoblashlar yoki tarmoq so'rovlar bilan ishlashda yaxshilaydi.

Asosiy Worker turlari:

  • Dedicated Worker: new Worker('worker.js') yordamida yaratiladi. Faqat uni yaratgan sahifa bilan ishlaydi va to'g'ridan-to'g'ri uning skriptidan boshqariladi.
  • Shared Worker: new SharedWorker('worker.js') yordamida yaratiladi. Bir nechta oynalar yoki sahifalar orasida, bir xil manbadan foydalanadigan skriptlar tomonidan kirish mumkin.
  • Service Worker: Brauzer va tarmoq o'rtasida proksi sifatida ishlaydi. Resurslarni kesh qilish, mustaqil ishlash va push-xabarnomalarni amalga oshirish uchun ishlatiladi.

Asosiy oqim va Worker o'rtasidagi aloqa asinxron tarzda xabarlar orqali amalga oshadi:

  • postMessage(): bir oqimdan boshqasiga ma'lumot yuborish uchun.
  • onmessage voqea ishlovchisi: boshqa oqimda ma'lumotlarni olish uchun.

Web Workers cheklovlari:

  • DOMga to'g'ridan-to'g'ri kirish imkoniyati yo'q.
  • window va document ob'ektlariga kirish imkoniyati yo'q.
  • Asosiy oqimdagi ba'zi global o'zgaruvchilar va funksiyalarga kirish imkoniyati yo'q.

Dedicated Worker foydalanish misoli:

// main.js
const worker = new Worker('worker.js');

worker.addEventListener('message', (event) => {
  console.log('Workerdan kelgan xabar:', event.data);
});

worker.postMessage('Asosiy oqimdan salom!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('Asosiy oqimdan kelgan xabar:', event.data);
  self.postMessage('Workerdan salom!');
});