我正在尝试制作一个从远程服务器下载图像并从这些图像创建幻灯片的应用程序。幻灯片部分我已经整理好了。我的代码不起作用,因为我试图在图像未完全下载时使用它们。我知道我需要使用 promise ,但我无法解决它。我做错了什么,我觉得最好在这里提出问题,而不是浪费时间来解决这个问题。
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
});
};
最佳答案
您无法链接 .pipe(...).then(...)
,因为 pipe
不会返回 Promise。相反,您需要使用以下内容:
...
let req = request(imageurls[i]);
req.pipe(fs.createWriteStream(img));
promises.push(req);
关于node.js - 使用node.js下载多个图像并等待所有请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46378532/