2016-04-04 47 views
0

Bir hizmet REST tüketiyorum ve şu anda 5025 kayıtları var, ancak hizmet kullandığımda sadece 1000 kayıtları görünür. Kesinlikle tüm kayıtları tüketmek için ne yapabilirim?angular angular angular angular

$http({ 
    method: 'GET', 
    url: "www.exampleurl.com", //is a example, I can not post the real url. 
    timeout:5000 
    }).success(function(data){ 
    console.log(data) 
    }).error(function(response,status,headers,config) { 
    console.log("problem") 
    }); 
+0

hizmet muhtemelen kayıtların sayısına bir sınır vardır: Eğer 1000 gruplar halinde istekleri yapabilir varsayarsak, bir kaba kuvvet özyinelemeli yaklaşım alabilir. Sonraki 1000 bin kaydı, url: "www.exampleurl.com?offset=1000" 'gibi bir şeyle alın. Parametrenin tam adı, hizmetin API'sine bağlı olacaktır. – georgeawg

+0

@georgeawg ama bütün kayıtları nasıl tüketebilirim? – yavg

+0

Onları 1000 kayıt kümesine getirin ve dizileri "Array.concat" ile birlikte yerleştirin. – georgeawg

cevap

1

istemcileri sayfalama nasıl işlemesi gerektiğini belirtmek bu API için dokümanlar var mıdır:

bu benim kod örneğidir? Genellikle sağlanan bir çeşit çağrı belirteci vardır.

  var dataSet = []; 
     function getExampleData(skip){ 

     return new Promise(function(fulfill,reject){ 
      return $http.get('http://www.example.com?skip='+skip).then(function(res){ 
        return fulfill(res); 
      }); 
     }).then(function(res){ 
      if(res.data) //<--or whatever will indicate there were results and we know we need to keep going 
       { 
        return getExampleData(skip +1000); 
       } 
       //if there are no results (or whatever our stop criteria is) we return the full dataset 

       return dataSet; 

     }); 

    } 
//initial call into 
return getExampleData(0).then(function(results){ 
console.log(results); 
}); 
+0

İlginç görünüyor ve ben de size teşekkür ediyorum. ama anlıyorum ki bu "geri arama" parametresidir (getExampleData (geri arama)). Ayrıca, kodunuzun bir kısmında bu özelliğin neden (getExampleData()) parametresine sahip olmadığını ve geri arama işlevi() olduğunu bilmek istiyorum. Çok teşekkürler – yavg

+0

$ http service '.success' ve' .error' yöntemleri [kullanımdan kaldırılmıştır] (https://docs.angularjs.org/api/ng/service/$http#deprecation-notice). Lütfen kullanımdan kaldırılmış yöntemlerle örnek yazmayın. Ayrıca bkz. [Neden Promise Ardından Geri Gelenler Bir Anti-Pattern Yöntemini Kullanıyor?] (Http://stackoverflow.com/questions/35660881/why-are-callbacks-from-promise-then-methods-an-anti-pattern). – georgeawg

+0

Evet üzgünüm, bunu birlikte olmamdan daha hızlı attım. Evet, geri arama bir işlevdir. Bunu şöyle çağırırsınız: getExampleData (function() { console.log ('complete!'); }); – scottjustin5000