Понимание Node.JS async.parallel
Мне нужно запросить данные с двух веб-серверов. Задачи независимы; поэтому я использую aync.parallel. Теперь я пишу "abc", "xyz" и "Done" в теле моей веб-страницы.
Поскольку задачи выполняются в одно и то же время, могу ли я запустить странный вывод? Например.
xab
cyz
Код.
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);
Ответы
Ответ 1
Если вы хотите быть абсолютно уверенным в том, в каком порядке печатаются результаты, вы должны передать свои данные (abc\n
и xyz\n
) через обратные вызовы (первый параметр - это ошибка) и обрабатывать/записывать их в последнем аргументе async.parallel
callback results
.
async.parallel([
one: function(callback) {
callback(null, 'abc\n');
},
two: function(callback) {
callback(null, 'xyz\n');
}
], function(err, results) {
// results now equals to: [one: 'abc\n', two: 'xyz\n']
});