2017-05-16 1 views
1

저는 현재 작업중인 기능을 사용하고 있으며 교차로를 찾아 왔습니다. 저는 Ajax를 처음 접했고 브라우저와 달리 Ajax 요청을 수동으로 처리하기위한 대기열을 구현하려고합니다. 몇 가지 조사를 수행했으며 this answer을 보았습니다. 그러나 전체 웹 사이트가 동적 인 것처럼 내가 보내려는 요청은 미리 선언되지 않습니다. 여기에 설명 된 JQuery.when() 함수와 함께 코드를 사용하는 방법이 있습니까?대기열에 Ajax 요청을 동적으로 추가합니다.

$.when(d1).done(function(var d2=$.Deferred()) { 
    d2.resolve(); 
} 
d1.resolve(); 

그러나이 구현은 나를 위해 작동하지 않습니다. 내가 얻을 수있는 도움에 감사드립니다!

답변

1

ES6 약속에서 요청을 래핑 한 다음 배열에 추가하고 배열을 인수로 사용하여 Promise.all()을 호출 할 수 있습니다. 문서를 통해 :

Promise.all() 메소드는 반복 가능한 인수의 약속의 모두 해결 한 경우 해결하거나 거부하는 첫 번째 약속의 이유 을 거부 한 약속을 반환합니다.

요청이 어디서 왔는지 상관하지 않고 해결하거나 거부하는 것입니다.

은 이런 무엇인가 조금 보이는 것 :

 let promiseArray = []; 
 
     for (let i = 0; i < 3; i++) { 
 
      let promise = new Promise((resolve, reject) => { 
 
       $.ajax({ 
 
        url: url, 
 
        type: 'GET', 
 
        success: data => resolve(data), 
 
        error: err => reject(err) 
 
       }); 
 
      }); 
 
      promiseArray.push(promise); 
 
     } 
 
     Promise.all(promiseArray).then((data) => { 
 
      //Will return an array of the successful requests, or will reject on the first rejected request 
 
      console.log(data); 
 
     });

support for ES6 promises 아직 매우 보편적되지 않습니다, 그래서 난 그냥 경우에 transpiler를 사용하는 거라고하지만 보인다 Promise.all이 당신을 도울 수 있습니다.

관련 문제