2014-05-13 6 views
0

다음과 같이 기호 배열이 있습니다. 배열의 각 요소에 대해 Ajax 요청을하고 있습니다.요청에 대한 조건부 지연을 설정하는 방법은 무엇입니까?

var symbols = ["SSS", "SEE"] 

$(document).ready(function() { 
    $.each(symbols, function (index, value) { 
     loadXMLDoc(value); 
    }); 
}); 

function loadXMLDoc(value) { 
    $.ajax({ 
     type: 'POST', 
     url: 'https://ganaga/aaaa/sss', 
     success: function (data) {} 
    } 

브라우저 콘솔에서 보류 중 상태로 많은 XHR 요청이 표시됩니다. 이전 배열 요소에 대한 응답을 얻은 경우에만 다음 Ajax 요청을 할 수 있습니까?

var symbols = ["SSS", "SEE"] 

$(document).ready(function() { 
    loadXMLDoc(0); 
}); 

function loadXMLDoc(idx) { 
    value = symbols[idx]; 
    if (value) { 
     $.ajax({ 
      type: 'POST', 
      url: 'https://ganaga/aaaa/' + value, 
      success: function (data) { 
       //... 
       loadXMLDoc(idx+1); 
      } 
     }); 
    } 
} 
+0

https://api.jquery.com/category/deferred-object/ – 1252748

답변

2

나는 조금 재귀를 사용할 수 있습니다.

function loadXMLDoc(n) { 
    var value = symbols[n]; 
    $.ajax({ 
     type: 'POST', 
     url: 'https://ganaga/aaaa/sss', 
     success: function (data) { 
      if (n < symbols.length-1) { 
       loadXMLDoc(n+1); 
      } 
     } 
    } 
} 
는 그것을 시작

:

loadXMLDoc(0); 
2

는 콜백 함수의 다음 AJAX 호출을 호출 :

2
var symbols = ["SSS", "SEE"] 

$(document).ready(function() { 
    loadXMLDoc(symbols); 
}); 

function loadXMLDoc(symbols) { 
    if(symbols[0]) { 
     $.ajax({ 
     type: 'POST', 
     url: 'https://ganaga/aaaa/sss', 
     success: function(data){ loadXMLDoc(symbols.slice(1)) } 
     }); 
    } 
} 

귀하의 질문에 loadXMLDoc에서 사용되는 더 value 없다, 나는 당신이 원하는 가정 : 또한

 url: 'https://ganaga/aaaa/'+ symbols[0], 

, 내가 이름을 바꿀 것 기능은 loadXMLDocs입니다.

관련 문제