2016-04-05 16 views
0

Şu ben bu koduUrl istekleri tek tek gerçekleştirilir ve yığın taşmasına neden olmaz? (Node.js)

function DownloadPage(uri) { 
    request(uri, function (err, res, body) { 
     if (err) { 
      console.log(err); 
     } else { 
      nextURL = FindURLBySomeLogic(body); 
      DownloadPage(nextURL); 
     } 
    }); 
} 
DownloadPage("http://example.com/"); 

var ama ben sayfaların bir miktar sonra yığın taşması alacak düşünüyorum. Sayfa sayısı sonsuzdur. Bundan nasıl kurtulabilirim? Her sayfa sadece JSON verilerini içerir.

+0

Daha önce bir tane yapıldıktan sonra bir tane indirdiğiniz için zaten tek tek. – nha

+0

Eh, eğer gerçekten sonsuz sayıda sayfanız varsa, depolama ortamınız gibi düşünecek çok şeyimiz var. – mccainz

+0

@mccainz depolamada sorun yok. "Sonsuz miktarda sayfa" ile, sayfaların zamanla görüneceği anlamına gelir. Bu istekler daima durmadan arka planda çalışacaktır. – user3239600

cevap

1

console.log(new Error().stack);request zaman uyumsuz olduğu için yığın boyutu artmaz olduğunu size gösterecektir.

1

Asenkronize isteklerinizi senkronize etmek için async.js kullanmayı deneyin. Tek tıklamayla async.js geri aramalarını çağırdığınız sürece, dizinin uzunluğu için iyi olmalıdır. Tüm istekleriniz bir sayfa talep ettiğinden, zaman uyumsuz olacak ve herhangi bir sorun oluşturmamalıdır. Async.js sayfasına bir göz atın, isteklerinizi senkronize etmek için birçok işlev sunar. Eğer birebir bir isteğinize gerek duymuyorsanız, setTimeout tabanlı talepler için gidip, isteklerin yaklaşık bire bir isteği takip etmesi için ağ hızına bağlı olarak zaman aşımı süresini ayarlayabilirsiniz. DownloadPage yılında

İlgili konular