2017-10-24 22 views
0

여러 개의 비동기 쿼리를 만들 필요가 있습니다. 부분은 500 개의 결과 (sharepoint 클라이언트 개체 모델)이고 마지막으로 사용자에게 모든 결과를 반환합니다.while 루프에서 검색을 지연 한 Jquery

저는 javascript가 새롭습니다. 어떻게 작동시킬 수 있는지 조언을 구합니다. 모든 경고가 마지막으로 호출됩니다 나는 그래서입니다 필요

는 UPD 검색 기능의 오른쪽 현재 startRow을 얻기 위해 내가

var results; 
var promises = []; 

function Search(startRow) { 
    var d = $.Deferred(); 
    setTimeout(function() { 
     alert(startRow); 
     //results+= ... - search results for the current startRow 
     d.resolve(); }, 
     3000); 

    return d.promise(); 
} 

var portion = 500; 
var startRow = 0; 
var rowCount = 2002; 
while (rowCount > startRow + portion) {         
    startRow += portion; 
    promises.push(Search(startRow)); 
} 

$.when.apply($, promises).then(
    function(){ 
     alert('done'); // get all search results here 
    }); 

을 필요의 데모에 대한 간단한 예를했습니다 startRow

+0

"* 그래서 필요한 것은 검색 기능 *에서 현재 올바른 startRow를 얻는 것입니다. 이미 가지고 있잖아, 그렇지? – aabilio

+0

아니요, 모든 알림은 마지막 startRow와 함께 호출됩니다. –

+0

죄송합니다. 정확히 무엇을하려고하는지 이해할 수 없습니다. – aabilio

답변

0

나는 이렇게 만들 수 있었다. 더 좋은 방법이 있습니까?

 var results; 
    var promises = []; 

    function Search() { 
     var d = $.Deferred(); 
     setTimeout(function() { 
      alert(startRows[0]); 
      startRows.splice(0, 1); 
      //results+= ... 
      d.resolve(); }, 
      3000); 

     return d.promise(); 
    } 

    var startRows = []; 
    var portion = 500; 
    var startRow = 0; 
    var rowCount = 2002; 
    while (rowCount > startRow + portion) {         
     startRow += portion; 
     startRows.push(startRow); 
     promises.push(Search()); 
    } 

    $.when.apply($, promises).then(
     function(){ 
      alert('done'); // get all search results here 
     });