Javascript 理解Node.JS async.parallel
我需要从两个web服务器请求数据。任务是独立的;因此,我正在使用。现在我只在我的网页主体上写“abc”、“xyz”和“Done” 由于任务是同时执行的,我会遇到奇怪的输出吗?例如:Javascript 理解Node.JS async.parallel,javascript,node.js,parallel-processing,Javascript,Node.js,Parallel Processing,我需要从两个web服务器请求数据。任务是独立的;因此,我正在使用。现在我只在我的网页主体上写“abc”、“xyz”和“Done” 由于任务是同时执行的,我会遇到奇怪的输出吗?例如: xab cyz 代码。 var async = require('async'); function onRequest(req, res) { res.writeHead(200, { "Content-Type" : "text/plain" }); async.pa
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
参数中处理/写入它们
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'
});
写入
res
的顺序取决于哪个async.parallel任务首先完成,但由于任务是独立的,因此顺序不重要。@Bulkan,谢谢。但是并行似乎不能正常工作。请阅读。我可以传递参数,但我应该在并行函数中执行长操作。我假设您正在执行一些长操作来获取两个字符串(可能来自数据库),建议将用于检索数据的代码(并行)和处理(res.write
)的代码(顺序)分开。这就是Genius,谢谢你们在这里的谈话,伙计们。迈克尔·唐给出了正确的答案吗?不clear@Green我想有些评论已经丢失了。。。基本上,我的意思是,向控制台写入数据是人们希望同步的事情,因此应该在并行
的回调中执行。parallel
的第一个参数中的函数应该负责获取任何数据(可以以任何顺序异步完成)并为parallel
的回调收集数据。在本例中,我们使用简单的函数调用并行
,但可以想象从磁盘或网络读取数据。