bestsource

어레이에서 여러 Ajax 호출 및 완료 시 콜백 처리

bestsource 2023. 8. 12. 10:31
반응형

어레이에서 여러 Ajax 호출 및 완료 시 콜백 처리

저는 jQuery에서 약속을 조금 전에 사용한 적이 있지만 이 시나리오에 적용하는 데 어려움을 겪고 있습니다.이를 위해 $.when() 및 $.done() 방법을 사용하는 것을 선호합니다.

제가 알기로는 $를 만들어야 합니다.요청을 기록하고 요청이 완료되면 콜백을 실행하는 지연된 개체입니다.아래 코드에서 콜백은 에이잭스가 요청하기 전에 실행되고 그 이후가 아닙니다. 아마도 저는 잠이 필요할 것입니다.

저는 제 코드가 불완전하다는 것을 알고 있습니다. 저는 for 루프를 추가하면서 코드를 적용하는 데 어려움을 겪고 있습니다.

http://jsfiddle.net/whiteb0x/MBZEu/

var list = ['obj1', 'obj2', 'obj3', 'obj4', 'obj5'];
var callback = function() {
  alert("done");
};
var requests = [];

var ajaxFunction = function(obj, successCallback, errorCallback) {
  for(i = 0; i < list.length; i++) {
    $.ajax({
      url: 'url',
      success: function() {
            requests.push(this);
      }
    });
  }
};
$.when($.ajax(), ajaxFunction).then(function(results){callback()});

에 대한 인수$.when의 반환 값이어야 합니다.$.ajax또한 별도로 부를 필요도 없습니다. 말이 안 됩니다.당신은 다음과 같은 것을 원합니다.

for (i = 0; i < list.length; i++) {
   requests.push($.ajax(...));
}
$.when.apply(undefined, requests).then(...)

그 이유는.apply필요한 이유는$.when여러 개의 인수를 사용할 수 있지만 인수 배열은 사용할 수 없습니다..apply기본적으로 다음과 같이 확장됩니다.

$.when(requests[0], requests[1], ...)

이는 또한 요청이 임의의 순서로 완료될 수 있다고 가정합니다.

http://jsfiddle.net/MBZEu/4/ - 모든 성공 메시지가 표시된 후 '완료'가 콘솔에 기록됩니다.

여러 요청 및 응답을 처리하는 데 도움이 될 수 있는 쉬운 예를 공유합니다.

var arr = [
    $.ajax({url:"test1.php"}),
    $.ajax({url:"test2.php"}),
    $.ajax({url:"test3.php"})
];
$.when.apply( undefined, arr ).then(function() {
    var objects=arguments;
    console.dir(objects);
});

언급URL : https://stackoverflow.com/questions/14352139/multiple-ajax-calls-from-array-and-handle-callback-when-completed

반응형