처음으로 $.when
을 사용하고 있으며 구문에 어려움이 있습니다.
아래의 간단한 예제와 비슷한 코드가 있습니다. 그것은 작동합니다 (내가 단순화 할 때 오류가 발생하지 않은 경우). 내 문제는 배열에 포함될 많은 요소 인 customerIds
을 집에 모르는 것입니다.
var customerIds = new [1, 2, 3];
$.when(
getCustomerData(customerIds[0]),
getCustomerData(customerIds[1]),
getCustomerData(customerIds[2])
).then(function() {
alert('success');
}).fail(function() {
alert('error');
});
function getCustomerData(int id) {
return new $.Deferred(function(defer) {
doSomeWork(id, defer);
}).promise();
}
나는 어려움 구문 권리를 얻는 데 제외한 다음과 같이 $.when
명령문을 작성하고 싶습니다.
function getCustomerDataCalls(customerIds) {
var dfds = [];
for (var id in customerIds) {
dfds.push(new $.Deferred(function(defer) {
doSomeWork(id, defer);
}).promise());
}
return dfds;
}
불행하게도 뭔가 내 구현에 문제가 있습니다 내가 잘못 가고 어디 해결할 수 없습니다로 getCustomerDataCalls
이 구현
$.when(
getCustomerDataCalls(customerIds),
).then(function() {
alert('success');
}).fail(function() {
alert('error');
});
. 내 추측은의 배열을 반환 할 때 뭔가 잘못 가고 있다는 점이다 Deferred
의
업데이트 :
lanzz 내 인위적인 예를 들어 이미, 나는 doSomeWork
당신은 각각'$의 갔지위한 새로운'Deferred'를 인스턴스화 할 필요가 없습니다()'호출 -'$의 갔지()는'이미 [= 새 당신이 – lanzz
'var에 DFDS를 사용할 수있는 약속을 반환 ];'오타입니다? – fcalderan
@ F.Calderan typo 실제로 수정 해 주셔서 감사합니다. –