J'apprends NodeJS et je voulais juste clarifier quelque chose. Jusqu'à présent, dans plusieurs tutoriels et livres d'introduction, ils ont décrit l'architecture "non bloquante" de Node - ou plutôt qu'il est possible (et recommandé, l'intégralité du point) de coder de manière non bloquante.
Ainsi, par exemple, cet exemple a été donné dans un livre que je lis d'une manière asynchrone pour obtenir des données d'une base de données.
http.createServer(function (req, res) {
database.getInformation(function (data) {
res.writeHead(200);
res.end(data);
});
});
Ce qui se passe (si je comprends bien), c'est que Node fait l'appel à la base de données, puis continue de traiter ce qui peut être le prochain sur la pile d'appels. Lorsque la demande de base de données est terminée, la variable de données dans la fonction de rappel anonyme sera remplie et cette fonction ajoutée à la pile d'appels (et exécutée par la suite lorsque Node y accède).
Ma question est, qu'est - ce que le traitement de la demande de base de données? Node doit sûrement bloquer pendant qu'il fait ça? Qu'est-ce qui prend en charge la demande de base de données? Ou si Node attend une demande HTTP GET asynchrone vers une ressource externe, qu'est-ce qui prend en charge cette demande qui permet à Node de continuer à traiter la pile d'appels et d'être "non bloquant"?
net
paquet quand http n'est pas disponible.