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);
});
}
]);