2014-06-05 60 views
0

我的問題是,它沒有獲取循環中的所有頁面數據,就像我運行1次單循環的腳本那麼它給出所有20條記錄,但如果我們增加循環就像讓我們說5時,那麼對於所有它必須付出100條記錄,但它給隨機記錄像50-55的結果,如果我單獨一個接一個循環運行,那麼它的確定,它給了100條記錄在JQuery和Ajax中的循環問題

function top_rated(){ 
    for(var k=1;k<=1000;k++){ 
     var url = 'http://api.themoviedb.org/3/', 
     mode = 'movie/top_rated', 
     key = '?api_key=<xxxxxxxxxxxxxx>&page='+k; 
     $.ajax({ 
      url: url + mode + key, 
      async: false, 
      contentType: 'application/json', 
      dataType: 'jsonp', 
      success: function (data) { 
        $.each(data, function(i, item) { 
         if(i == "results") { 
          da = data[i]; 
          $.each(da, function (j, item) { 
           if(!item.id) {return false; } 
           fetchmovie(item.id,'top_rated'); 
          }); 
         } 
        }); 


      }, 
      error: function (request,error) { 
       alert('Network error has occurred please try again!'); 
      } 
     }); 
    } 

} 
  • 列表項
+2

的API中可能有一個要求節流,這可能會限制可在一分鐘之類的東西 –

+0

發送請求的數量這可能是一個服務器端問題..你沒有得到任何錯誤警報? – Reigel

+0

就像@ArunPJohny所說的,它很可能與API的節流有關。例如,我知道,腐爛的西紅柿只能讓你每天做10k次請求(iirc)。這個網站可能有類似的地方。 – royhowie

回答

1

我做了一些研究,發現這在their website

新系統將共享所有8個實例的IP地址狀態,並提供適當的平衡速率限制。費率限制本身保持不變(10秒內最多30次請求)。關鍵的區別在於您的請求期間以及您跳閘時的響應處理。我會給你一些例子,以便在我們接受這個改變之前,你可以修改你的代碼。

他們開始於3月5日實施這個新的限制,2014年

+0

嗨,你會告訴我相同的例子。 – user3709703

+0

只是不要超過30每10秒的請求,或超過3個請求/秒。 – royhowie

+0

@ user3709703我只是添加一個'setInterval()'或者每10秒調用一次的東西。在這段時間內,請檢查您是否提出了1k個請求。如果是,清除間隔,否則繼續進行。 – royhowie