2016-04-05 20 views
0

Düğümde çok yeniyim bu yüzden benimle birlikte ayı. Harici bir sunucudan bir dizi görüntü indirmeye çalışıyorum. Şimdiye kadar sınırlı bir şekilde çalışmayı başarabildim. Aşağıdaki kodu çalıştırdığımda, görüntülerin sadece yaklaşık yarısı bunu web sayfasına yapıyor. Bunu doğru şekilde yapmadığımı biliyorum ve bazı rehberlik arıyorum. Ben bugüne kadarnode.js görüntüleri http istekleri listesinden sunucuya indir

var request = require("request"), 
    fs = require("fs"), 
    views = ['sitename1', 'sitename2', 'sitename3'...] 
for (var view in views) { 
    request({ 
     url: 'http://' + SERVERURL + '/api/2.2/sites/' + siteID + '/workbooks/' + views[view]['workbookID'] + '/views/' + views[view]['id'] + '/previewimage', 
     headers: { 
      'Content-Type': 'image/png', 
      'X-Tableau-Auth': authToken 
       } 
      , encoding: 'binary'}).pipe(
       fs.createWriteStream('./public/images/thumbnails/' + SITE + '/views/' + views[view]['url'] + '.png' 
      )) 
     }; 

Bu doğru kaydedildiğinden görüntülerin bazı olsun işaret etmek istiyorum var koddur. Eksik olan şeyin, dosyanın listedeki bir sonraki öğeye geçmeden önce başarıyla kaydedildiğinden emin olmak için bir geri arama olduğunu düşünüyorum. Bunu nasıl uygulayacağımı bilmiyorum.

Başka bir hızlı not (önemli değil), REST API kullanarak bir Tableau Server'dan görüntü indirmeye çalışıyorum.

cevap

0

Sadece zaman uyumsuz modülü

async.eachSeries(views, (function(view, callback) { 
      var thumbPath = 'public/images/thumbnails/' + req.session.SITE + '/views/' + req.session.views[view]['url'] + '.png' 
       request({ 
        url: 'http://' + SERVERURL + '/api/2.2/sites/' + req.session.siteID 
         + '/workbooks/' + req.session.views[view]['workbookID'] + '/views/' + req.session.views[view]['id'] + '/previewimage', 
        headers: { 
         'Content-Type': 'image/png', 
         'X-Tableau-Auth': req.session.authToken 
        } 
        }).pipe(
         upload(thumbPath)); 
        callback() 
      }), 
      function(err){ 
       if(err){ 
        console.log("a thumb failed to download") 
       } else { 
        console.log("all thumbs downloaded") 
       } 
      } 
     ) 
kullanarak bunu anladım