Saya sedang belajar NodeJS dan hanya ingin mengklarifikasi sesuatu. Dalam beberapa tutorial pengantar dan buku sejauh ini, sangat awal mereka telah menggambarkan arsitektur "non-blocking" Node - atau lebih tepatnya bahwa mungkin (dan direkomendasikan, seluruh poin) untuk kode dalam cara yang tidak menghalangi.
Jadi misalnya, contoh ini diberikan dalam buku yang saya baca tentang cara asinkron untuk mendapatkan data dari database.
http.createServer(function (req, res) {
database.getInformation(function (data) {
res.writeHead(200);
res.end(data);
});
});
Apa yang terjadi (seperti yang saya pahami) adalah Node membuat panggilan ke database, kemudian melanjutkan pemrosesan apa pun yang mungkin berikutnya pada tumpukan panggilan. Ketika permintaan database selesai, variabel data dalam fungsi panggilan balik anonim akan diisi dan fungsi itu ditambahkan ke tumpukan panggilan (dan kemudian dieksekusi ketika Node sampai ke sana).
Pertanyaan saya adalah, apa sebenarnya yang memproses permintaan basis data? Tentunya Node harus memblokir sementara itu melakukan itu? Apa yang menangani permintaan basis data? Atau jika Node sedang menunggu permintaan GET HTTP asinkron ke sumber daya eksternal, apa yang menangani permintaan itu yang memungkinkan Node untuk terus memproses tumpukan panggilan dan menjadi "non-pemblokiran"?
net
paket ketika http tidak tersedia.