【发布时间】:2018-11-08 01:01:16
【问题描述】:
在 node.js 中,我有一个名为 jobs 的数组,我将文件位置和图像推送到该数组。这种情况每 13 秒发生 112 次(每个图像/位置都是唯一的)
jobs.push(['/home/user/public_html/img/'+filename+'.png',canvas[n].toDataURL().replace(/^data:image\/\w+;base64,/,"")]);
然后我遍历所有作业并使用 fs 写入文件
for(var job=0;job<jobs.length;job++){
fs.writeFile(jobs[job][0],(new Buffer(jobs[job][1],'base64')));
}
我的问题是;文件写入循环可以更快完成吗?
这样,文件一个接一个地写入。我认为最好同时完成所有这些操作因为这作为服务器作业每 13 秒仅发生一次
多个 fs 实例有帮助吗?
var fs1=require('fs');
var fs2=require('fs');
var fs3=require('fs');
还是网络工作者? (我在节点中不知道这个)
【问题讨论】:
-
节点是异步的。您的循环甚至不等待文件被写入。
-
我在没有回调的情况下读取 fs.writeFile 将导致在完成之前不会执行任何代码!?
-
看看这里,似乎同样的问题stackoverflow.com/questions/24705002/…
-
好的,感谢@Mritunjay 为 Array.forEach 和 SLaks 强调了我的误解,但我的问题是如何通过一次完成所有这些来加快批量文件的写入速度? child_processes 看起来很有趣!? fs 一次只能关注一个文件似乎有点弱!