Sobes.tech
Middle

Ինչպես ստեղծել Web Worker հոսք JavaScript-ում?

sobes.tech AI

Պատասխան AI-ից

JavaScript-те Web Worker հոսք ստեղծելու համար կարելի է օգտագործել Worker կոնստրուկտորը:

// Ստեղծում ենք նոր Web Worker, փոխանցելով JS ֆայլի ուղին,
// որը կկատարվի առանձին հոսքում:
const worker = new Worker('worker.js'); 

worker.js ֆայլում (կամ ցանկացած այլ ֆայլ, նշված է վորքերի ստեղծման ժամանակ) կկատարվի կոդը առանձին հոսքում:

// worker.js

// Հաղորդագրությունների մշակումը, որոնք ուղարկվում են հիմնական հոսքից
self.onmessage = function(event) {
  const receivedData = event.data;
  console.log('Հաղորդագրություն ստացվեց հիմնական հոսքից:', receivedData);

  // Հաղորդագրության ուղարկում վերադառնալով հիմնական հոսք
  const responseData = { message: 'Բարև Worker-ից!', data: receivedData };
  self.postMessage(responseData);
};

// Ցանկության դեպքում, կարելի է ավելացնել սխալների մշակումը
self.onerror = function(error) {
  console.error('Սխալ Worker-ում:', error);
};

Հիմնական հոսքում (որտեղ ստեղծվել է վորքը) կարող եք փոխազդել վորքի հետ՝

// main.js

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

// Ուղարկել հաղորդագրություն Web Worker-ին
worker.postMessage({ command: 'start', payload: 'մեկ որոշ տվյալ' });

// Հաղորդագրությունների մշակումը, որոնք ստացվում են Web Worker-ից
worker.onmessage = function(event) {
  const receivedData = event.data;
  console.log('Worker-ից ստացված հաղորդագրություն:', receivedData);
};

// Սխալների մշակումը Web Worker-ում
worker.onerror = function(error) {
  console.error('Սխալ հիմնական հոսքում՝ Worker-ում:', error);
};

// Վորքը ավարտել (ընտրովի)
// worker.terminate(); 

Հիմնական կետեր՝

  • Կապ: Տվյալների փոխանակումը հիմնական հոսք և worker միջև կատարվում է postMessage() մեթոդով և onmessage handler-ով:
  • Հատկություններ: Worker-ները չունեն մուտք DOM, window օբյեկտ և այլ բրաուզերի գլոբալ օբյեկտներ։ Նրանք ունեն սահմանափակ մուտք navigator, location, XMLHttpRequest, setTimeout, setInterval, fetch, WebSockets և այլ օբյեկտների:
  • Անջատում: Worker-ի կոդը կատարվում է առանձին հոսքում, ինչը կանխում է հիմնական հոսքի բլոկավորումը և բարելավում է կատարողականությունը, հատկապես ռեսուրսներ պահանջող հաշվարկներում։