我正在使用NodeJs使用fs.createReadStream将许多画布图像写入文件。我在某处读到,以这种方式写入文件是异步操作,这一事实已被我的代码运行并且所有图像均在代码执行结束时写入的事实所证实。这是我的代码:
for(const i = 0; i < 8000; ++i) {
... create canvas image code ...
const stream = canvas.createPNGStream();
let myPath = path.join(...);
const out = fs.createWriteStream(myPath);
stream.pipe(out);
out.on('finish', () => console.log('The PNG file was created.'));
}
当结束事件开始触发时,我收到错误消息:
错误:EMFILE:打开的文件太多
是否存在另一种写这些文件的方法来避免此错误?我已经读过this,并尝试使用'graceful-fs'代替常规的'fs'来处理大量文件,但是没有运气。我也一直在寻找createWriteStream的同步版本以及pipe(),但是什么也没找到。