我需要从两个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);
如果要绝对确定结果的打印顺序,则应通过回调(第一个参数是错误)传递数据(abc\n和xyz\n),并在最终的回调参数中处理/写入它们。async.parallel``results
abc\n
xyz\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' });