Webworker in React

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.

Nachteile?

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.

Was ist ein Webworker?

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 :

  • Installieren Sie nodeJS, das uns Zugriff auf npm und npx gibt: https://nodejs.org/en/download/
  • React- Projekt generieren: Im Terminal ausführen „npx create-react-app replace-me-with-the-name-of-the-app – template typescript“

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.

Suggested posts

Tipps für den Einstieg in die Cybersicherheit ohne technischen Hintergrund.

Tipps für den Einstieg in die Cybersicherheit ohne technischen Hintergrund.

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.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

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.

Related posts

Keine Passwörter mehr – wie Passkeys Ihr Passwort ersetzen

Keine Passwörter mehr – wie Passkeys Ihr Passwort ersetzen

Um Unklarheiten zu vermeiden, werden die folgenden Begriffe verwendet: Authentifikator; Das Mobiltelefon, das für die Anmeldung verwendet wird. Website; Die Website oder Anwendung, die der Benutzer verwendet, um den Anmeldeanforderungsdienst zu stellen; Der Anbieter, der die jeweilige Dienstleistung bereitstellt, z

Medien neu denken: McChesneys fünf Wahrheiten und die Zukunft der Kommunikation

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.

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

„Hey Siri, spiel Me Dive von Olivia Dean.“ Es war Mai 2021, als ich mein Praktikum bei der Future Academy Africa in Akure, Nigeria, begann.

Die langsame Erosion: Enthüllung der Art und Weise, wie Menschen in ihrer Karriere verkümmern

Die langsame Erosion: Enthüllung der Art und Weise, wie Menschen in ihrer Karriere verkümmern

In der heutigen schnelllebigen und wettbewerbsintensiven Welt spielt die Karriere eine wichtige Rolle für das persönliche Wachstum, die finanzielle Stabilität und die allgemeine Lebenszufriedenheit. Viele Menschen befinden sich jedoch in einem unerbittlichen Kreislauf aus Stagnation und Unzufriedenheit, der ihr Berufsleben allmählich verkümmert.