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 (函数柯里化?)

更多阅读

有爱

希望本文对你有用 ^_^

Comments

Fork me on GitHub