Javascript node.js-如何从url链接下载多个图像

Javascript node.js-如何从url链接下载多个图像,javascript,node.js,image,download,Javascript,Node.js,Image,Download,基本上,我想从图像服务下载大量图像。我有一个非常大的JSON对象,其中包含该JSON对象中的所有URL(~500左右)。我尝试了几个npm图像下载包,以及一些其他代码,使每个图像下载都在同一时间;然而,大约50%的下载图像在下载时数据丢失(大部分图像在查看时是透明的)。如何一个接一个地下载每个图像(等待最后一个图像完成后再开始下一个图像)以避免数据丢失 编辑:以下是相关代码,使用: 我的linksJSON如下所示: [["link.one.com/image-jpeg"], ["link.two

基本上,我想从图像服务下载大量图像。我有一个非常大的JSON对象,其中包含该JSON对象中的所有URL(~500左右)。我尝试了几个npm图像下载包,以及一些其他代码,使每个图像下载都在同一时间;然而,大约50%的下载图像在下载时数据丢失(大部分图像在查看时是透明的)。如何一个接一个地下载每个图像(等待最后一个图像完成后再开始下一个图像)以避免数据丢失

编辑:以下是相关代码,使用:

我的
links
JSON如下所示:

[["link.one.com/image-jpeg"], ["link.two.com/image-jpeg"]]

由于您正在进行大量下载,请尝试。用于进一步的详细信息。

好的,首先:

我真的不相信下载这500多张图片会立刻开始。V8引擎(有点像
nodejs
code执行器)实际上管理着合理数量的线程,并重用它们来完成任务。因此,它不会创建“很多”新线程,但会等待其他线程完成

现在,即使是一次启动,我也不认为文件会被破坏。如果文件已经损坏,你就无法打开这些文件

所以,我很确定这些图片的问题不是你所想的

现在,对于原始问题,为了测试我是否错了,您可以尝试按如下顺序下载这些文件:

var recursiveDowload = function (urlArray, nameArray, i) {
    if (i < urlArray.length) {
        request.get(urlArray[i])                                                                                  
            .on('error', function(err) {console.log(err)} )                                                   
            .pipe(fs.createWriteStream(nameArray[i]))                                                                 
            .on('close', function () { recursiveDownload (urlArray, nameArrya, i+1); });
    }
}
recursiveDownload(allUrlArrya, allNameArray, 0);
var recursiveDowload=function(urlArray,nameArray,i){
if(i
下载完成后,无论您使用哪个库进行下载,都必须调用回调。您可以使用它来防止并行下载。请在您的问题中添加一些相关代码,以便我们提供帮助。感谢您的回答,我已包含相关代码。
var recursiveDowload = function (urlArray, nameArray, i) {
    if (i < urlArray.length) {
        request.get(urlArray[i])                                                                                  
            .on('error', function(err) {console.log(err)} )                                                   
            .pipe(fs.createWriteStream(nameArray[i]))                                                                 
            .on('close', function () { recursiveDownload (urlArray, nameArrya, i+1); });
    }
}
recursiveDownload(allUrlArrya, allNameArray, 0);