La compréhension Node.JS async.en parallèle
J'ai besoin de demander des données à partir de deux serveurs web. Les tâches sont indépendantes; par conséquent, je suis en utilisant aync.en parallèle. Maintenant, je ne suis qu'un écrit 'abc', 'xyz', et 'Fait' pour le corps de ma page web.
Puisque les tâches sont exécutées en même temps, je peux courir dans une étrange sortie? E. g.,
xab
cyz
Le code.
var async = require('async');
function onRequest(req, res) {
res.writeHead(200, {
"Content-Type" : "text/plain"
});
async.parallel([ function(callback) {
res.write('a');
res.write('b');
res.write('c\n');
callback();
}, function(callback) {
res.write('x');
res.write('y');
res.write('z\n');
callback();
} ], function done(err, results) {
if (err) {
throw err;
}
res.end("\nDone!");
});
}
var server = require('http').createServer(onRequest);
server.listen(9000);
- L'ordre de ce qui est écrit à
res
dépend de quel de l'asynchrone.en parallèle de la tâche qui termine en premier, mais que les tâches sont indépendantes de l'ordre ne compte pas. - je vous remercie. Mais
parallel
ne semble pas fonctionner correctement. Merci de lire une nouvelle question.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez être absolument certain dans l'ordre dans lequel les résultats sont imprimés, vous devez transmettre vos données (
abc\n
etxyz\n
) par le biais de la rappels (premier paramètre est le message d'erreur) et de la poignée/rédiger dans la finaleasync.parallel
du rappelresults
argument.res.write
) il (séquentiel).parallel
's de rappel. Les fonctions dans le premier argument deparallel
devrait être responsable de l'obtention de toutes les données (qui peut être fait de manière asynchrone dans n'importe quel ordre) et de collecte pourparallel
's de rappel. Dans ce cas, nous faisons appelparallel
avec trivial fonctions, mais on peut imaginer la lecture depuis le disque dur ou le réseau à sa place.