ฉันกำลังเรียนรู้ NodeJS และแค่ต้องการชี้แจงบางอย่าง ในแบบฝึกหัดเบื้องต้นและหนังสือหลายเล่มจนถึงตอนต้นพวกเขาได้อธิบายสถาปัตยกรรม "ไม่บล็อก" ของโหนดหรือค่อนข้างเป็นไปได้ (และแนะนำทั้งจุด) เป็นรหัสในลักษณะที่ไม่ปิดกั้น
ตัวอย่างเช่นตัวอย่างนี้มีให้ในหนังสือที่ฉันกำลังอ่านวิธีอะซิงโครนัสเพื่อรับข้อมูลจากฐานข้อมูล
http.createServer(function (req, res) {
database.getInformation(function (data) {
res.writeHead(200);
res.end(data);
});
});
เกิดอะไรขึ้น (ตามที่ฉันเข้าใจ) คือโหนดทำให้การเรียกไปยังฐานข้อมูลจากนั้นดำเนินการสิ่งที่อาจเกิดขึ้นต่อไปในสแต็คการโทร เมื่อการร้องขอฐานข้อมูลเสร็จสมบูรณ์ตัวแปรข้อมูลในฟังก์ชั่นการโทรกลับที่ไม่ระบุชื่อจะถูกเติมและฟังก์ชั่นนั้นจะถูกเพิ่มเข้าไปในสแต็คการโทร (และดำเนินการในภายหลังเมื่อโหนดเข้าสู่มัน)
คำถามของฉันคือการประมวลผลการร้องขอฐานข้อมูลคืออะไร? แน่นอนโหนดต้องปิดกั้นในขณะที่มันทำอย่างนั้น? การดูแลคำขอฐานข้อมูลคืออะไร หรือถ้าโหนดกำลังรอการร้องขอ HTTP GET แบบอะซิงโครนัสไปยังทรัพยากรภายนอกสิ่งที่ดูแลคำขอนั้นที่อนุญาตให้โหนดประมวลผลสแต็กการโทรต่อและเป็น "non-blocking"
net
แพ็คเกจเมื่อ http ไม่พร้อมใช้งาน