我有一系列fs.writeFile png作业,png标题已经被删除了
canvas.toDataURL().replace(/^data:image\/\w+;base64,/,"")
像这样的作业数组
jobs=[['location0/file0'],['location1/file1'],['location2/file2'],['location3/file3']];
我刚刚开始使用异步并且正在查看他们的文档并且有很多方法
队列看起来很有趣并且很平行..
现在我处理我的工作(在async.waterfall中),就像这样
function(callback){//part of waterfall
(function fswritefile(){
if(jobs.length!==0){
var job=jobs.shift();
fs.writeFile(job[0],(new Buffer(job[1],'base64')),function(e){if(e){console.log(e);}else{fswritefile();}})
}
else{callback();}
})();
},//end of waterfall part
使用此模块可以更有效/更快地完成吗?
答案 0 :(得分:1)
async.waterfall
将按顺序处理作业。我认为你可以与async.each并行完成所有事情:
async.each(jobs, function (job, done) {
var data = new Buffer(job[1],'base64');
fs.writeFile(job[0], data, done);
}, function (err) {
// …
});
所有工作都将并行启动所有工作。但是,node.js始终将磁盘上的并发操作数限制为4。
编辑:无论你做什么,node.js都会限制fs上的并发操作数。主要原因是您只有1个磁盘,尝试更多磁盘效率不高。