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()մեթոդով ևonmessagehandler-ով: - Հատկություններ: Worker-ները չունեն մուտք DOM,
windowօբյեկտ և այլ բրաուզերի գլոբալ օբյեկտներ։ Նրանք ունեն սահմանափակ մուտքnavigator,location,XMLHttpRequest,setTimeout,setInterval,fetch,WebSocketsև այլ օբյեկտների: - Անջատում: Worker-ի կոդը կատարվում է առանձին հոսքում, ինչը կանխում է հիմնական հոսքի բլոկավորումը և բարելավում է կատարողականությունը, հատկապես ռեսուրսներ պահանջող հաշվարկներում։