私はnode.jsがシングルスレッドで同期していることを読んでいます。ただし、I/O要求は非同期に実行されます[1]。node.js - コード実行パスについての精度
私は質問があります。次のコードスニペットが与えられます。
c.query( //#1
'SELECT SLEEP(20);', //#2
function (err, results, fields) {
console.log("query executed"); //#3
}
);
console.log("hello"); //#4
キューに2つの要求があるとします。私の理解は次のとおりです:最初の要求は、このパス#1 - >#2 - >#4 - >#3を行います。その後、第2の要求が処理される。
私が読んできたことから、著者は#1 - >#2 - >#4を暗示しているようです。 #3は非同期(I/Oを待っている)なので、2番目の要求はその間に処理されます。
誰でもこれを明確にすることができますか?ありがとう。
#1は、20S用MySQLデータベース睡眠を行うので、#1 - >#3 - >#2を意味#2 20代後に実行されます。その後、#1は実行をブロックします。 – Kamil
本当に。 node.jsの実行フローについて話しています。 'SELECT SLEEP(20000)'のようなものを作成すると、dbは20秒間スリープ状態になりますが、node.jsはブロックされず、次のコード行が引き続き実行されます。他のロジックは、構築しているアプリケーションによって異なります。 –
#3に時間がかかる場合は、パスが#1 - >#2 - >#3になると仮定できますか? – Kamil