Presque tous les endroits du nœud où les fonctions de rappel sont utilisées sont asynchrones. Le code derrière les fonctions de rappel est susceptible d'être exécuté en premier que le code des fonctions de rappel, en particulier les opérations de base de données. Bien sûr, Node fournit également des fonctions pour les versions synchrones, telles que les opérations de fichiers. Fs.ReadFileSync () est la version synchrone de fs.readfile ().
La question est donc: ForEach () Asynchrone? Logiquement parlant, si la synchronisation n'est pas ajoutée, elle doit être asynchrone.
La copie de code est la suivante:
var arr = ['a', 'b', 'c'];
var str = '123';
arr.ForEach (fonction (item) {
str + = item;
while (true) {}; // Utilisez une boucle morte pour le coller ~~
});
Console.log (STR);
Exécutez le code ci-dessus et il finit par être coincé, sans aucune sortie. .
Donc, foreach () dans le nœud est synchronisé! !
Quand j'ai utilisé le nœud pour la première fois, je n'ai pas considéré ce problème, alors je l'ai écrit de manière synchrone. J'ai soudainement pensé qu'après le test, j'ai été choqué et j'ai pensé que le code précédent avait été mal écrit.
Si dans certains cas, ForEach doit être traité de manière asynchrone, Google It et il y a un nœud-rampe, vous pouvez l'essayer ~~ Portal: https://github.com/cfsghost/node-array
Ce travail a été créé par http://www.cnblogs.com/imyzf