Heim >Web-Frontend >js-Tutorial >Was ist nicht blockierender E/A in Node.js? Mit Beispielen verstehen!
Was ist nicht blockierender E/A in
Node.js? Dieser Artikel verwendet Beispiele, um Ihnen das Verständnis der nicht blockierenden E/A in Node.js zu erleichtern. Ich hoffe, dass er Ihnen hilfreich sein wird!
Vorne geschrieben
Ich wollte schon lange Node.js lernen. Ich habe das Gefühl, dass das Front-End das serverseitige Wissen verstehen und in der Lage sein muss, ein kleines Full-Stack-Projekt abzuschließen Aus Zeitgründen habe ich jedoch letztes Semester keine Zeit mehr zum Lernen. Zufällig habe ich heute den zweiten Kurs bestanden und bin hier, um Sie erneut mit Node.js zu testen. ! ! [Empfohlenes Lernen: „nodejs-Tutorial“]
Anstehen, um Essen zu bestellen, blockiert die E/A.
Restaurantbestellungen ist nicht-blockierende E/A
Xiaofang hilft ihrer Mutter Sie muss Folgendes tun: Wäsche in der Waschmaschine waschen (20 Minuten), den Boden fegen (10 Minuten), den Schreibtisch aufräumen (10 Minuten), Kleidung aufhängen (5 Minuten). Können Sie eine clevere und vernünftige neue Sequenz entwerfen, damit Xiaofang diese Dinge in mindestens ( ) Minuten erledigen kann? A.20
B.25
C.30
D.35
nicht blockierende E/Ayo.
DenkenWas ist als Erstes zu bestimmen, um nicht blockierende E/A zu verstehen?
Wir müssen sicherstellen, dass es ein Eingabe-/Ausgabesystem gibt.
Überlegen Sie, ob während des E/A-Prozesses andere E/A ausgeführt werden können.
Kann------>Nicht blockierendKann nicht------->Blockieren
Eine Kastanie schreiben
index.js, öffnen Sie dann unseren Front-End-VS-Code, öffnen Sie das Terminal, führen Sie <code>npm install glob
aus, um ein Glob-Paket zu installieren, damit wir bequemer beobachten können, ob E/A blockiert ist.
index.js
const glob = require('glob'); var result = null; console.time('glob') result = glob.sync(__dirname + '/**/*') console.timeEnd('glob') console.log(result)
node index.js
in das Terminal ein, um diese Datei direkt auszuführen. Schauen Sie sich die erste Zeile an. Die Ausführung dauert auf meinem Computer insgesamt 20,93 Millisekunden ein Server, ist nicht mehr klein.
Sehen wir uns die nicht blockierende E/A anconst glob = require('glob'); var result = null; console.time('glob') glob(__dirname + '/**/*',function(err,res){ result = res; // console.log(result) console.log('got result'); }) console.timeEnd('glob') console.log('今天你卷了没?')
index.js
,再打开我们前端人的vs-code,打开终端,执行npm install glob
安装一个glob包,来帮我们更加方便去观察I/O是否阻塞。
先来看阻塞I/O
代码先贴上:index.js
首先,先用require引入我们的glob包,接下来,用glob.sync去做一个打印目录的一个操作,将结果打印的同时,利用time/timeEnd,去记录时间,看node执行这个操作共花费多少时间。
在终端输入node index.js
Zuallererst ist es unsere Zeit: 3,258 ms im Vergleich zu den vorherigen 20,93 Einfach weniger, nicht zu viel. Am Ende wird die Anweisung ausgegeben, und schließlich wird das gewünschte Operationsergebnis ausgegeben. Mit anderen Worten: Es führt andere Operationen zwischen Eingabe und Ausgabe aus und hat keinen Einfluss auf das Ergebnis viel weniger Zeit!
FazitMein Verständnis: Durch nicht blockierende E/A können wir die Wartezeit erheblich verkürzen, und während der Wartezeit können wir auch einige andere Vorgänge ausführen (jeder Rat ist willkommen!!!)
Es gibt keine Absolutheiten. Das bedeutet nicht, dass ein nicht blockierender I/O zum Beispiel ein Unfall unter den Kellnern ist Für diesen Kellner wirkt sich dies auf die Gesamtqualität des Restaurants aus (ja (wird als Serverabsturz verstanden); E/A wird blockiert. Da es mehrere Kellner gibt, ist ein Eins-zu-Eins-Service möglich, auch wenn einer von ihnen einen Unfall hat hat keinen Einfluss auf die Gesamtqualität und die Einstellung mehrerer Kellner ist ebenfalls mit entsprechenden Kosten verbunden.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonWas ist nicht blockierender E/A in Node.js? Mit Beispielen verstehen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!