Ich habe gelesen, dass node.js single-threaded und synchron ist. E/A-Anforderungen werden jedoch asynchron ausgeführt [1].node.js - Präzision über Code Ausführungspfad
Ich habe eine Frage. Gegeben das folgende Code-Schnipsel:
c.query( //#1
'SELECT SLEEP(20);', //#2
function (err, results, fields) {
console.log("query executed"); //#3
}
);
console.log("hello"); //#4
Angenommen, es gibt 2 Anfragen in der Warteschlange. Mein Verständnis ist wie folgt: Die erste Anfrage führt diesen Pfad # 1 -> # 2 -> # 4 -> # 3. Danach wird die zweite Anfrage bearbeitet.
Von dem, was ich gelesen habe, scheint der Autor # 1 -> # 2 -> # 4 impliziert. Da # 3 asynchron ist (Warten auf E/A), wird die zweite Anfrage zwischenzeitlich bearbeitet.
Könnte jemand darüber klarstellen? Vielen Dank.
Da # 1 macht -> # 3 - 2> # 2 bedeutet, dass # wird nach 20s ausgeführt. Dann blockiert # 1 die Ausführung, richtig? – Kamil
Nicht wirklich. Wir sprechen über den Ausführungsablauf von node.js. Wenn Sie etwas wie 'SELECT SLEEP (20000)' machen, wird Ihre Datenbank 20 Sekunden lang schlafen, aber node.js wird nicht blockiert und wird weiterhin die nächsten Codezeilen ausführen. Die andere Logik hängt von der Anwendung ab, die Sie erstellen. –
Also, wenn # 3 lange dauert, dann können wir annehmen, dass der Pfad # 1 -> # 2 -> # 3 werden kann? – Kamil