Heim > Web-Frontend > js-Tutorial > Wie kann ich in Node.js wirklich nicht blockierenden Code erreichen?

Wie kann ich in Node.js wirklich nicht blockierenden Code erreichen?

DDD
Freigeben: 2024-12-11 12:18:19
Original
454 Leute haben es durchsucht

How Can I Achieve Truly Non-Blocking Code in Node.js?

Der richtige Weg, um nicht blockierenden Code in Node.js zu erreichen

Bei der asynchronen Programmierung ermöglichen nicht blockierende Funktionen die gleichzeitige Ausführung von anderem Code ohne auf deren Fertigstellung zu warten. Das einfache Einschließen des Codes in ein Promise, wie im Beispiel unten, macht ihn jedoch nicht wirklich nicht blockierend.

function longRunningFunc(val, mod) {
    return new Promise((resolve, reject) => {
        sum = 0;
        for (var i = 0; i < 100000; i++) {
            for (var j = 0; j < val; j++) {
                sum += i + j % mod
            }
        }
        resolve(sum)
    })
}
Nach dem Login kopieren

Obwohl der Code in ein Promise eingeschlossen wird, wartet das Programm mit dem Drucken, was darauf hinweist, dass der Code blockiert.

Nicht blockierenden Code verstehen

In Node.js einfaches JavaScript Code ist von Natur aus blockierend und wird in einem einzelnen Thread ausgeführt. Kein Umschließen von Promises oder asynchronen APIs kann dazu führen, dass es nicht blockiert. Um nicht blockierendes Verhalten zu erreichen, muss man Techniken verwenden, die die Codeausführung auf externe Threads verlagern, oder experimentelle Node.js-APIs für Threads übernehmen.

Nicht blockierenden Code erreichen

Hier sind einige Möglichkeiten, echten nicht blockierenden Code in Node.js zu erstellen:

  • Child Prozesse: Code in einem separaten untergeordneten Prozess ausführen und asynchron auf Ergebnisse zugreifen.
  • Worker-Threads (Node.js v11): Nutzen Sie die experimentelle Worker-Threads-Funktion, um separate Worker-Threads parallel zu erstellen zum Hauptthread.
  • Native Code Add-ons: Schreiben Sie native Code-Erweiterungen mit Node.js-Add-on-Mechanismus und Verwendung von libuv-Threads oder Threads auf Betriebssystemebene.
  • Asynchrone APIs: Bauen Sie auf vorhandenen asynchronen APIs auf, ohne die Codeausführung im Hauptthread zu verlängern.

Durch die Implementierung nicht blockierender Techniken können Node.js-Anwendungen lang laufende Vorgänge effektiv verarbeiten, ohne anderen Code zu behindern Ausführungen, was zu einer verbesserten Reaktionsfähigkeit und Parallelität führt.

Das obige ist der detaillierte Inhalt vonWie kann ich in Node.js wirklich nicht blockierenden Code erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage