Understanding Node.JS async.parallel

Understanding Node.JS async.parallel

本文关键字:parallel async JS Node Understanding      更新时间:2023-09-26

我需要从两个web服务器请求数据。任务是独立的;因此,我使用aync.parallet。现在我只在我的网页正文中写入"abc"、"xyz"answers"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);

如果您想绝对确定结果的打印顺序,您应该通过回调传递数据(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'
});