一尘不染

了解Node.JS async.parallel

node.js

我需要从两个Web服务器请求数据。任务是独立的;因此,我正在使用aync.parallel。现在,我只在网页正文中写入“
abc”,“ xyz”和“完成”。

由于任务是同时执行的,我能否遇到奇怪的输出?例如,

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

阅读 213

收藏
2020-07-07

共1个答案

一尘不染

如果要绝对确定结果的打印顺序,则应通过回调(第一个参数是错误)传递数据(abc\nxyz\n),并在最终的回调参数中处理/写入它们。async.parallel``results

async.parallel({
    one: function(callback) {
        callback(null, 'abc\n');
    },
    two: function(callback) {
        callback(null, 'xyz\n');
    }
}, function(err, results) {
    // results now equals to: results.one: 'abc\n', results.two: 'xyz\n'
});
2020-07-07