2017-07-17 8 views
-2

Ich bin neu in NodeJS und da ist etwas, das ich nicht verstehe.asynchron in Knoten und Javascript

Die grundlegende Funktion von Node ist asynchron, aber JS selbst tut dies (über setTimeout). Also, warum Features wie Promise vor Node nicht existierten?

@EDIT: Mit der Antwort von Christoph, verstehe ich, dass die JS und Node heute ähnlich sind, also sind beide asynchrone nicht blockierende I/O?

Danke euch allen.

+0

wie 'setTimeout' funktioniert [im Browser] (https://Stackoverflow.com/a/29391634/2476675) versus [in Knoten] (https://Stackoverflow.com/a/10767807/2476275) – royhowie

+0

Versuchen Sehen Sie sich dieses kurze Video an: https://www.youtube.com/watch?v=8aGhZQkoFbQ Es könnte ein bißchen mehr darüber erklären, was es für nodejs bedeutet. –

+0

Bearbeiten Sie die Frage, um sie auf ein bestimmtes Problem zu beschränken, und geben Sie genügend Details an, um eine angemessene Antwort zu finden. Vermeiden Sie es, mehrere verschiedene Fragen gleichzeitig zu stellen. – Quentin

Antwort

2

Dass die API Promise erst vor kurzem dem JavaScript-Kern hinzugefügt wurde, hat nichts mit Knoten zu tun. Es ist nur ein Teil der Sprachentwicklung selbst.

Javascript begann als eine einfache Skriptsprache, um das Browser-DOM zu manipulieren. Es wurde 95 von Brendan Eich innerhalb von 2 Wochen entwickelt. Dies bedeutet, dass die meisten Funktionen, die Sie heute haben, nicht vorhanden sind. Z.B. XMLHTTPRequest, der Kern jeder modernen Website wurde erst im Jahr 2000 eingeführt. Und damals hielten viele Leute JavaScript für ein nettes Gimmick, um ein paar auffällige Texteffekte zu erstellen, aber kein ernstzunehmendes Werkzeug für die (Web-) Entwicklung.

Nachdem sich der Staub des Browserkriegs gelegt hatte und Javascript über Flash und Java triumphierte, stimmten die Anbieter zu, dass sie eigentlich zusammenarbeiten sollten und es strenge Webstandards für alle Browser geben sollte und die Standardisierung aller Webtechnologien (HTML, CSS, EcmaScript) hat einen massiven Schub bekommen. Damit hat Javascript viele neue Funktionen erhalten.

Mit dem Erfolg von Javascript Menschen begannen zu denken "Warum nur Javascript für Client-Side-Scripting verwenden?" - So hat Ryan Dahl 2009 Node.js erstellt, eine JavaScript-Laufzeitumgebung zur Ausführung von JavaScript-Code-Server-Seite.

Das heißt, in ihrem Kern „Browser Javascript“ und „NodeJS“ sowohl tatsächlich Basis auf ECMAScript und auf dem gleichen Prinzip der Single-Threaded asynchrone Ausführung auszuführen. Beide haben die Möglichkeit, worker threads zu spawnen. Grundlegende Funktionalität wie setTimeout ist in Browsern und Knoten ziemlich identisch.

Allerdings haben die Browser benutzerdefinierte Objekte, die für das Rendern der Webseite und die Interaktion mit dem Benutzer sorgen und sehr streng Sandboxed sind, während der Knoten alle für eine serverseitige Sprache (z. B. umfangreichen Dateizugriff) erforderlichen APIs aufweist stellen im Wesentlichen Sicherheitsrisiken dar, wenn sie in einem Browser vorhanden sind.

+0

Ich verstehe das, aber hat asynchrone Verhalten von JS existiert vor Node? Ist es inspiriert? Und warum Bibliotheken wie Bluebird in NodeJs geschrieben wurden? Danke für Ihre Antwort. –

+0

@ Quoc-HaoTran NodeJS ist Javascript, also sind alle seine Paradigmen die gleichen wie das Javascript des Browsers. Bluebird ist nicht in NodeJS geschrieben, es ist eine Bibliothek für Nodejs in Javascript geschrieben. Ich habe meine Antwort bearbeitet, ich hoffe, dass es jetzt klarer ist. – Christoph

+0

Vielen Dank, es ist jetzt klarer. Kann ich dir noch eine Frage stellen? Wie können wir eine asynchrone Funktion in JS schreiben? –

Verwandte Themen