JavaScript - однопоточный. Что это значит и что такое нить?
Поток - это контекст выполнения, который представляет собой всю информацию, необходимую ЦП для выполнения потока инструкций. Поэтому обычно JS-приложения содержатся в одном потоке.
Представьте, что в вашем веб-приложении вам нужно обработать длинную задачу, Dom, которая представляет собой веб-страницу на обычном языке, зависнет, потому что интерпретатору нужно завершить задачу, прежде чем перейти к следующей. Он не может обрабатывать две задачи одновременно, поэтому, когда он завершит длинную задачу, он сможет обновить Дом и вернуться к жизни. Чтобы избежать этого, используйте веб-воркер.
Веб-воркер - это JS-скрипт, который выполняется в фоновом режиме независимо. Веб-работники часто могут использовать несколько ЦП.
В этом случае мы увидим, как использовать веб-воркер в React.
Настраивать :
Давай повеселимся.
Чтобы иметь возможность общаться с воркером, мы будем использовать onMessage и postMessage ().
Теперь мы напишем нашу функцию Фибоначчи, которую будет выполнять веб-воркер.
//fibo.worker.js
// eslint-disable-next-line import/no-anonymous-default-export
export default () => {
// eslint-disable-next-line no-restricted-globals
self.onmessage = (message) => {
const nbr = message.data;
var n1 = 0;
var n2 = 1;
var somme = 0;
for (let i = 2; i <= nbr; i++) {
somme = n1 + n2;
n1 = n2;
n2 = somme;
}
const result = nbr ? n2 : n1;
postMessage(result);
};
};
// eslint-disable-next-line import/no-anonymous-default-export
// eslint-disable-next-line no-restricted-globals
//woker-builder.js
export default class WorkerBuilder extends Worker {
constructor(worker) {
const code = worker.toString();
const blob = new Blob([`(${code})()`]);
return new Worker(URL.createObjectURL(blob));
}
}
import WorkerBuilder from './worker/woker-builder';
import Worker from './worker/fibo.worker';
instance = new WorkerBuilder(Worker);
componentDidMount() {
instance.onmessage = (message) => {
if (message) {
console.log("Message from worker", message.data);
}
};
}
<button onClick ={() => instance.postMessage(5)}>
Send Message
</button>
import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import WorkerBuilder from "./worker/woker-builder";
import FiboWorker from "./worker/fibo.worker";
const instance = new WorkerBuilder(FiboWorker);
class App extends Component {
componentDidMount() {
instance.onmessage = (message) => {
if (message) {
console.log("Message from worker", message.data);
}
};
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Web worker in React
</p>
<button
onClick={() => {
instance.postMessage(5);
}}
>Send Message</button>
</header>
</div>
);
}
}
export default App;
Если мы углубимся в консоль на вкладке «Источники», то увидим, что в правом верхнем углу у нас есть два потока: основной и рабочий фибо с именем f18f83d0–6ed0–484e-86f1–6d1938793085.
Надеюсь, вы кое-что узнали из этой лекции, спасибо за чтение.
В 2022 году я перешел с нетехнической роли на кибербезопасность. У меня была первая степень по немецкому языку, я знаю, что вы шокированы и любопытны, как я смог успешно перейти, ну, это просто случилось.
Введение Инсульт — это неотложная медицинская помощь, которая может случиться с кем угодно в любое время. Это происходит, когда приток крови к части мозга нарушается, что приводит к внезапной потере функции мозга.
В 2022 году, с выпуском GPT-3, навыки письма, кажется, стали менее важными. С помощью ИИ люди с плохим письмом также могут генерировать качественный персонал.
Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.
На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.
В сегодняшнем быстро развивающемся бизнес-ландшафте концепция гибридной и удаленной работы приобрела беспрецедентный импульс. Поскольку компании продолжают приспосабливаться к меняющимся потребностям и ожиданиям своих сотрудников, эксперты из разных областей собрались вместе, чтобы обсудить преимущества, проблемы и будущее этого преобразующего способа работы.