2013-05-10 3 views
0

때이 같은으로 호출여러 개의 jQuery는 언제 사용됩니까? 내가 여러 아약스에 전달할 수

var dnldAy = []; 
for (i=0, iMax=urlsToLoad.length; i < iMax; i++) { 
    dnldAy.push($.ajax({ 
     url: urlsToLoad[i], 
     dataType: "json" 
    })); 
} 

$.when.apply($, dnldAy).done(function(doneCb) { 
    console.log(doneCb); 
} 

when는 단지 아약스 요청의 배열에서 doneCb을 받고 실행합니다. 다른 콜백을 얻으려면 done 함수에 매개 변수를 더 추가 할 수 있지만 확장 할 수는 없다는 것을 알고 있습니다. (내 when에 아약스 전화가 알려지지 않을 것이므로, 미리 완료된 기능에서 얼마나 많은 매개 변수가 필요한지 알 수 없다.

이 디자인 문제를 해결하는 올바른 방법은 무엇입니까?

답변

3

the documentation for jQuery.when()의 첫 번째 예는 개별 약속에 대한 인수에 액세스하는 방법을 보여줍니다.

그러나 알 수없는 약속 수에 접근하는 방법에 대해서는 다루지 않았기 때문에 약간의 추가 지식이 필요합니다. 즉 함수의 인수는 다음과 같이 반복 될 수있는 배열과 유사한 객체 arguments에서 사용할 수 있습니다. .

$.when.apply($, dnldAy).done(function() { 
    for(i=0; i<arguments.length; i++) { 
     var doneCb = arguments[i]; 
     console.log(doneCb); 
    } 
} 

doneCb

자체 대응 약속 해결하고있는 값 (들)를 포함하는 배열 될 것이다.

+0

doneCb와 doneCbs 중 하나를 결정하는 방법은 무엇입니까? 두 경우 모두 인수가 배열이됩니다. – jedierikb

+1

이 상황에서 작동하는'var enumResp = $ .isArray (arguments [0]); '를 사용했습니다. – jedierikb

+0

jedierikb, 멋지다! –