使用node.js下载多个图像,并等待所有请求完成
我正在尝试制作一个应用程序,从远程服务器加载图像,并从这些图像创建幻灯片。我整理好的幻灯片部分。我的代码不起作用,因为我试图在图像未完全下载时使用它们。我知道我需要使用承诺,但我无法解决。我做错了什么,我觉得最好在这里问个问题,而不是浪费时间来解决这个问题使用node.js下载多个图像,并等待所有请求完成,node.js,download,promise,request,Node.js,Download,Promise,Request,我正在尝试制作一个应用程序,从远程服务器加载图像,并从这些图像创建幻灯片。我整理好的幻灯片部分。我的代码不起作用,因为我试图在图像未完全下载时使用它们。我知道我需要使用承诺,但我无法解决。我做错了什么,我觉得最好在这里问个问题,而不是浪费时间来解决这个问题 var fs = require('fs') var request = require('request-promise'); function downloadImgs(imageurls){ //imageurls is an arr
var fs = require('fs')
var request = require('request-promise');
function downloadImgs(imageurls){ //imageurls is an array of urls
var tempar=[];
var promises=[];
for (var i = 0; i <=imageurls.length; i++) {
if(typeof imageurls[i] !== "undefined"){
img=tempfolder+i+'.jpg'; //tempfolder is a global variable
tempar.push(img);
prom=request(imageurls[i]).pipe(fs.createWriteStream(img));
promises.push(prom);
}
}
Promise.all(promises).then(function(data) {
createslideshow(tempar);//create slideshow with downloaded images
});
};
var fs=require('fs'))
var请求=要求(“请求-承诺”);
函数downloadImgs(imageurls){//imageurls是一个URL数组
var tempar=[];
var承诺=[];
对于(var i=0;i您不能链接.pipe(…)。然后(…)
,因为pipe
不会返回承诺。相反,您需要使用以下命令:
...
let req = request(imageurls[i]);
req.pipe(fs.createWriteStream(img));
promises.push(req);