threads nodejs node method example async javascript node.js parallel-processing async.js

javascript - nodejs - spawn process node



Node.js-Async.js: ¿cómo funciona la ejecución paralela? (2)

Javascrit es de un solo hilo a menos que use bibliotecas / módulos especiales. Entonces, cuando esté ejecutando este código, ejecutará la primera función y luego la segunda.

Lo único que hace async.parallel es ejecutar todas las funciones y esperar todas las respuestas, y luego ejecutar el código en la devolución de llamada.

Debido a que todo el código que usó es síncrono, el resultado será síncrono.

Quiero saber cómo funciona la ejecución paralela en async.js

async = require(''async'') async.parallel([ function(callback){ for (var i = 0; i < 1000000000; i++) /* Do nothing */; console.log("function: 1") }, function(callback){ console.log("function: 2") } ]);

En el ejemplo anterior, espero obtener la salida:

función: 2

función: 1

Pero, la consola lanza lo inverso, ¿qué está pasando? Gracias.


Obtiene la respuesta que no espera porque la function: 1 inicio async function: 1 primero y no libera el control al bucle de eventos. No tiene funciones asíncronas en function: 1 .

Node.js es un servidor asíncrono de un solo hilo. Si bloquea el bucle de eventos con una tarea de CPU de larga ejecución, no se podrá llamar a ninguna otra función hasta que finalice la tarea de CPU de larga duración.

En lugar de un gran bucle for, intente hacer solicitudes http. Por ejemplo...

async = require(''async'') request = require(''request'') async.parallel([ function(callback){ request("http://google.jp", function(err, response, body) { if(err) { console.log(err); callback(true); return; } console.log("function: 1") callback(false); }); }, function(callback){ request("http://google.com", function(err, response, body) { if(err) { console.log(err); callback(true); return; } console.log("function: 2") callback(false); }); } ]);