我正在尝试创建一个从远程服务器下载图像并从这些图像创建幻灯片的应用程序。我已经整理了幻灯片部分。我的代码不起作用,因为我试图在没有完全下载的情况下使用这些图像。我知道我需要使用承诺,但我无法解决它。我做错了什么,我觉得最好在这里问一个问题,而不是浪费时间来解决这个问题。
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
});
};
答案 0 :(得分:1)
您无法链接.pipe(...).then(...)
,因为pipe
未返回承诺。相反,您需要使用以下内容:
...
let req = request(imageurls[i]);
req.pipe(fs.createWriteStream(img));
promises.push(req);