Node.js Nodejs下载多个文件

Node.js Nodejs下载多个文件,node.js,image,download,Node.js,Image,Download,我需要下载约26k张图片。图像列表和URL存储在csv文件中。我正在读取csv文件,并尝试在列表中循环下载图像 如果我使用的是小集合~1-2k,它可以正常工作,但是当我切换到全集合时,我得到的EMFILE错误 Error: EMFILE, open 'S:\images_download\Images\189900008.jpg' 我注意到node试图一次创建所有文件,这可能是问题所在,但我无法强制它逐个创建。我的理解是,下面的代码应该是这样工作的,但显然不是这样 (只需提及此代码是在Wind

我需要下载约26k张图片。图像列表和URL存储在csv文件中。我正在读取csv文件,并尝试在列表中循环下载图像

如果我使用的是小集合~1-2k,它可以正常工作,但是当我切换到全集合时,我得到的EMFILE错误

Error: EMFILE, open 'S:\images_download\Images\189900008.jpg'
我注意到node试图一次创建所有文件,这可能是问题所在,但我无法强制它逐个创建。我的理解是,下面的代码应该是这样工作的,但显然不是这样

(只需提及此代码是在Windows上执行的)

代码:


正如@slebetman所评论的,可以使用逐个处理文件或限制并行节点来解决该问题:

async.eachLimit(files, 5, function(file, callback) {
 // ... Process 5 files at the same time
}, function(err){
});

要使异步一次处理一个项目,请使用
.eachSeries()
而不是
。each()
也可以使用
.eachLimit()
一次处理两个文件,一次处理三个文件等。谢谢@slebetman!我错过了这一点。工作如预期!在其他线程上阅读我的答案:在其他线程上阅读我的答案:最好写出完整的相关信息,因为SO中的评论不是永久性的,可以随时删除。大多数评论没有被删除,但应该注意的是,评论者过去可以并且已经删除了评论,以“清理”网站。评论并不意味着内容。
async.eachLimit(files, 5, function(file, callback) {
 // ... Process 5 files at the same time
}, function(err){
});