JavaScript ist ein Singlethread. Was bedeutet das und was ist ein Thread?
Ein Thread ist ein Ausführungskontext, bei dem es sich um alle Informationen handelt, die eine CPU benötigt, um einen Befehlsstrom auszuführen. Normalerweise sind JS-Anwendungen also in einem Thread enthalten.
Stellen Sie sich vor, Sie müssen in Ihrer Web-App eine lange Aufgabe bearbeiten, die Dom, die Webseite in allgemeiner Sprache, wird einfrieren, weil der Dolmetscher die Aufgabe beenden muss, bevor er zur nächsten übergeht. Er kann nicht zwei Aufgaben gleichzeitig bearbeiten. Wenn er die lange Aufgabe beendet hat, kann er den Dom aktualisieren und wieder zum Leben erwecken. Die Lösung, um dies zu vermeiden, ist die Verwendung eines Webworkers.
Ein Webworker ist ein JS-Skript, das unabhängig im Hintergrund ausgeführt wird. Web-Worker sind oft in der Lage, mehrere CPUs zu verwenden.
In diesem Fall werden wir sehen, wie man einen Webworker in React verwendet.
Einrichten :
Lass uns Spaß haben.
Um mit dem Arbeiter kommunizieren zu können, verwenden wir onMessage und postMessage().
Jetzt schreiben wir unsere Fibonacci-Funktion, die wir vom Webworker ausführen werden.
//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;
Wenn wir im Quellen-Tab tiefer in die Konsole gehen, sehen wir oben rechts zwei Threads, den Haupt- und den Fibo-Worker namens f18f83d0–6ed0–484e-86f1–6d1938793085
Ich hoffe, Sie haben etwas aus diesem Vortrag gelernt, vielen Dank für Ihr Lesen.
Im Jahr 2022 wechselte ich von einer nicht-technischen Rolle in die Cybersicherheit. Ich habe meinen ersten Abschluss in Deutsch gemacht, ich weiß, dass Sie schockiert und neugierig sind, wie mir der Übergang gelungen ist. Nun, es ist einfach passiert.
Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.
In der heutigen hypervernetzten Welt spielen Mediensysteme eine entscheidende Rolle bei der Bildung der öffentlichen Meinung und damit bei der demokratischen Entscheidungsfindung. In seiner tiefgreifenden Analyse der politischen Ökonomie der Kommunikation stellt der Wissenschaftler Robert McChesney die herkömmliche Meinung in Frage und präsentiert die „fünf Wahrheiten“ über die Medien, wie er sie nennt.
Hallo, Cyber-Enthusiasten! Willkommen zurück bei der OSINT-Serie zur Bedrohungsjagd. Im ersten Artikel habe ich Ihnen einen Überblick über OSINT und seine Bedeutung bei der Bedrohungsjagd gegeben.
[Alarm auslösen: Dieser Aufsatz enthält Screenshots von Menschen, die den Mörder von Jordan Neely loben.] Polizeibeamte haben endlich – und vielleicht widerstrebend – Daniel Penny, den Mann, der Jordan Neely bis zu seinem Tod gewürgt hat, wegen dieses Mordes angeklagt.
Der Juckreiz in meiner Hand breitete sich aus, als ich mit dem örtlichen Buchhändler um ein weiteres Buch verhandelte. Dieses Buch würde wie die anderen, die ich kürzlich gekauft habe, seinen Thron auf meinem Stapel „To Be Read“ (TBR) finden; und trotzdem habe ich es gekauft.