Sobes.tech
Middle

Kuidas luua Web Worker voog JavaScriptis?

sobes.tech AI

Vastus AI-lt

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);
};

// Web Workerди токтотуу (каалоо боюнча)
// worker.terminate(); 

Ключевые моменты:

  • Коммуникация: Обмен данными между основным потоком и worker происходит через методы postMessage() и обработчик onmessage.
  • Ограничения: Worker не имеют доступа к DOM, объекту window, и другим глобальным объектам браузера. Они имеют ограниченный доступ к объектам navigator, location, XMLHttpRequest, setTimeout, setInterval, fetch, WebSockets и другим.
  • Изоляция: Код в worker выполняется в отдельном потоке, что предотвращает блокировку основного потока и улучшает производительность, особенно при выполнении ресурсоемких вычислений.