Sobes.tech
Middle

Web Workers რა არის და რა მიზნით გამოიყენება?

sobes.tech AI

პასუხი AI-სგან

Web Workers საშუალებას იძლევა resource-კონცენტრირებული ოპერაციების შესრულება ფონურ ნაკადებში, ისე რომ არ ბლოკავდეს JavaScript-ის ძირითადი ნაკადს, რომელიც პასუხისმგებელია მომხმარებლის ინტერფეისის გამოსახულებაზე. ეს ხელს უშლის გვერდის გაყინვას და აუმჯობესებს აპლიკაციის რეაგირების შესაძლებლობას, განსაკუთრებით მონაცემების დიდი მოცულობით, გამოთვლებით ან ქსელური მოთხოვნებით მუშაობისას.

ძირითადი Worker ტიპები:

  • დამკვიდრებული Worker: შექმნილია new Worker('worker.js')-ით. მუშაობს მხოლოდ იმ გვერდთან, რომელმაც შექმნა, და პირდაპირ მართავს ამ გვერდის სკრიპტიდან.
  • გაერთიანებული Worker: შექმნილია new SharedWorker('worker.js')-ით. შეიძლება იყოს ხელმისაწვდომი რამდენიმე სკრიპტიდან სხვადასხვა ფანჯრებში ან ტაბებში ერთ წყაროსგან.
  • სერვის Worker: მუშაობს როგორც პროქსი ბრაუზერისა და ქსელის შორის. გამოიყენება რესურსების ქეშირებისთვის, ავტონომიური მუშაობისთვის და push შეტყობინებების განსახორციელებლად.

კომუნიკაცია ძირითადი ნაკადის და Worker-ის შორის ხდება ასინქრონულად შეტყობინებებით:

  • postMessage(): მონაცემების გადაცემა ერთ ნაკადიდან მეორეში.
  • onmessage მოვლენის დამუშავებელი: მონაცემების მიღება სხვა ნაკადში.

Web Workers შეზღუდვები:

  • პირდაპირი წვდომა DOM-ზე არ აქვთ.
  • window და document ობიექტებზე წვდომა არ აქვთ.
  • ზოგიერთი გლობალური ცვლადის და ფუნქციის წვდომა არ აქვთ ძირითადი ნაკადიდან.

დამკვიდრებული Worker-ის გამოყენების მაგალითი:

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

worker.addEventListener('message', (event) => {
  console.log('მესიჯი Worker-დან:', event.data);
});

worker.postMessage('გამარჯობა ძირითადი ნაკადიდან!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('მესიჯი ძირითადი ნაკადიდან:', event.data);
  self.postMessage('გამარჯობა Worker-დან!');
});