Casi todos los lugares en el nodo donde se utilizan funciones de devolución de llamada son asíncronos. Es probable que el código detrás de las funciones de devolución de llamada se ejecute primero que el código en las funciones de devolución de llamada, especialmente las operaciones de la base de datos. Por supuesto, Node también proporciona funciones para versiones sincrónicas, como las operaciones de archivos. fs.ReadFilesync () es la versión sincrónica de fs.ReadFile ().
Entonces la pregunta es, ¿es foreach () asíncrono? Hablando lógicamente, si no se agrega sincronización, debe ser asíncrono.
La copia del código es la siguiente:
var arr = ['a', 'b', 'c'];
var str = '123';
arr.forEach (función (elemento) {
str += item;
while (true) {}; // usa un bucle muerto para atascarlo ~~
});
console.log (str);
Ejecute el código anterior y termina atascado, sin ninguna salida. .
Entonces, Foreach () en el nodo está sincronizado! !
Cuando usé Node por primera vez, no consideré este problema, así que lo escribí sincrónicamente. De repente pensé que después de la prueba, me sorprendió y pensé que el código anterior había sido escrito incorrectamente.
Si en algunos casos, foreach debe procesarse de manera asincrónica, Google y hay una matriz de nodo, puede probarlo ~~ Portal: https://github.com/cfsghost/node-array
Este trabajo fue creado por http://www.cnblogs.com/imyzf