Jetons un coup d'œil à ce qu'est l'opération de blocage;
Je simule une méthode sleep () pour retarder l'impression Hello Star pendant 10 secondes.
requestHandlers.js
La copie de code est la suivante:
fonction start () {
Console.log ("Demande Handler 'Start' a été appelé.");
fonction du sommeil (millisecondes) {
var startTime = new Date (). GetTime ();
while (new Date (). gettime () <startTime + Millionsonconds);
}
sommeil (10000);
Renvoie "Hello Start";
}
fonction upload () {
Console.log ("Demande Handler 'Upload' a été appelé.");
retourner "bonjour téléchargement";
}
export.start = start;
exports.upload = upload;
Lors de la demande / démarrage, il a retardé 10 secondes avant d'imprimer.
Lors de la demande / téléchargement, il ne sera pas affecté.
Ensuite, faites une expérience:
Entrez http: // localhost: 8888 / Démarrez dans la barre d'adresse de la première fenêtre du navigateur, mais ne l'ouvrez pas d'abord!
Entrez http: // localhost: 8888 / Téléchargez dans la barre d'adresse de la deuxième fenêtre du navigateur. De même, ne l'ouvrez pas d'abord!
Nous appuyons sur Entrée dans la première fenêtre ("/ start") et passons rapidement à la deuxième fenêtre ("/ upload") et appuyons sur Entrée.
Remarque, ce qui s'est passé:
L'URL / START a pris 10 secondes à charger, ce qui était le même que ce à quoi nous nous attendions.
L'URL / téléchargement a pris 10 secondes!
Mais il n'a pas d'opération similaire à Sleep () dans le gestionnaire de demande correspondant. Quel est le problème?
La raison en est que start () comprend les opérations de blocage. Pour le dire de manière vivante, "il bloque tous les autres travaux de traitement".
Node.js est unique et peut traiter les tâches en parallèle sans ajouter de threads supplémentaires.
Il met en œuvre des opérations parallèles via des boucles d'événements, et nous devons en faire pleinement un usage - éviter de bloquer les opérations autant que possible, utilisez plutôt des opérations non bloquantes plus souvent.
Dans la section suivante, nous présenterons comment mettre en œuvre des opérations non bloquantes.