2017-09-23 6 views
0

リモートサーバーから画像をドローロードし、これらの画像からスライドショーを作成するアプリケーションを作成しようとしています。私が選んだスライドショー部分。画像が完全にダウンロードされていない間に画像を使用しようとしているため、コードが機能しません。私は約束を使用する必要があることを知っていますが、私はそれを整理することはできません。私は間違ったことをやっているし、時間を無駄にするのではなく、ここで質問をする方が良いと感じている。約束を返さないpipeので、あなたがチェーン.pipe(...).then(...)できないnode.jsで複数の画像をダウンロードし、すべてのリクエストが完了するまで待ちます。

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 

    }); 

}; 

答えて

1

、。代わりに、次のものを使用する必要があります。

... 
let req = request(imageurls[i]); 
req.pipe(fs.createWriteStream(img)); 
promises.push(req); 
+0

ありがとう!あなたは私を半分救った! –

関連する問題