Подтвердить что ты не робот

Понимание 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);
4b9b3361

Ответ 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']
});