Nodejs中的并行IO调用
并行IO调用
我们编写nodejs程序的时候,常常会遇到可以平行调用IO。 如果使用串行方式调用,会导致嵌套callback太多和抛弃了并行IO的优势。 于是,我们都会选择并行调用。
应用场景设定: 合并2个文本的内容,并输出
伪代码
print readFile(file1) + readFile(file2)
计数器模式
最容易想到的方法就是使用计数器,记录是否全部IO都执行完了,然后一并获取结果。
使用封装好的fork方法
fork
come from Coordinating parallel execution in node.js:
function fork(async_calls, shared_callback) {
var counter = async_calls.length;
var all_results = [];
function makeCallback (index) {
return function () {
counter --;
var results = [];
// we use the arguments object here because some callbacks
// in Node pass in multiple arguments as result.
for (var i=0;i<arguments.length;i++) {
results.push(arguments[i]);
}
all_results[index] = results;
if (counter == 0) {
shared_callback(all_results);
}
}
}
for (var i=0;i<async_calls.length;i++) {
async_calls[i](makeCallback(i));
}
}
Currying the callback (函数柯里化?)
更多阅读
有爱
希望本文对你有用 ^_^