var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
fs.readFile('a.txt', function(err, data){
res.write(data);
fs.readFile('b.txt', function(err, data){
res.end(data);
});
});
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
http接受用户请求时会合并目录下a.txt和b.txt文件的内容进行返回,并且要保证a.txt的内容在b.txt之前,上面的代码通过嵌套回调函数可以实现这一效果。
但是这样的嵌套使得文件打开是串行的,不可能要合并多少个文件就嵌套多少层(简直疯了),嵌套不仅慢而且乱。听说有基于事件的模块可以使文件并行同步打开,然后一起返回,但是我找官方的API没找到。
鄙人才接触Nodejs,诸位轻喷。
並行讀取,使用 EventProxy 的話:
你需要async https://github.com/caolan/async
比如,下麵的例子,是並行執行one,two,完了之後調用最後的函數
使用paraller函數
parallel(tasks, [callback]) (多個函數並行執行)
這個方案沒有采用任何js庫,方法也不算很難