/ / Node.js callback ne se déclenche jamais sauf si le code principal est exécuté - node.js, asynchrone, callback

Le rappel Node.js ne se déclenche jamais tant que le code principal n'est pas exécuté - node.js, asynchrone, rappel

Dans node.js, lorsqu'il existe une boucle sans fin après un appel de fonction qui obtient également une fonction de rappel en tant que paramètre, le rappel ne se déclenche jamais, même si l'opération est terminée. Par exemple :

database.insert(data, function() {
//do stuff
})

while(1) {
//do stuff
}
  • Dans le cas ci-dessus, la fonction de rappel avec"// fait des choses" dedans, ne tire jamais. Cela me rend confus sur le fait que node.js est appelé asynchrone. Comment peut-il être asynchrone s'il ne peut pas exécuter de rappel alors qu'il y a autre chose à faire?

  • Si l'insertion de base de données est asynchrone alors que la fonction de rappel doit attendre, comment cette concomitance est-elle fournie?

Je vous remercie.

edit: fautes de frappe

Réponses:

0 pour la réponse № 1

Node.js est mono-threadé, il ne peut donc faire qu'une chose à la fois. Si vous exécutez un travail très gourmand en ressources processeur, vous pourrez peut-être le faire dans un autre processus en utilisant child_process?

Sinon, et cela n'est pas vraiment recommandé, vous pourriez diviser votre travail en plusieurs appels de la même fonction et utiliser process.nextTick (), c'est-à-dire:

function compute() {
// do work here
process.nextTick(compute);
}

compute();

Cela permettra à la boucle d'événements de traiter d'autres tâches entre vos calculs.