2014-04-10 4 views
0

다음에 (promisesArray) .always()를 실행하면 다음 코드가 내 약속을 완료 한 후 ALL 012가 아닌 내 setButtons 함수를 실행 중입니다 !!! 어떻게 수정해야합니까?jQuery ANY

var promises = []; 
var c = 0; 
$.each(data, function (index, item) { 
    promises.push(GetReservation(item.UniqueId, 
     apiRoot, 
     function (data2) { 
      //do stuff including increment c 
      console.log('DONE! count=' + c); 
     }, 
     function (x, y, z) { 
      if (x.status == 404) { 
       //OK, no reserve! this is expected! 
      } 
     })); 
}) 
$.when.apply($, promises).always(function() { 
    setButtons(box, c) 
}); 
+0

나머지 코드를 보여주세요. 약속 배열 등을 만드는 방법 – adeneo

+0

@adeneo! 약속은 내가 ​​말할 수있는 한 잘 만들어집니다 ... – Leonardo

+0

그 함수가 반환하는 것을 말하는 것은 불가능합니다. 그들은 실제로 유효한 약속을 반환합니까? – adeneo

답변

1

약속/지연의 실제 배열을 약속하겠습니까? 지연/약속 배열 이외의 다른 요소가 전달되는 경우 항상 즉시 해결됩니다.

수정

그래, 그렇게 될 가능성이 있습니다. 이 함수에서 아무 것도 반환하지 않으므로 약속은 아마도 '정의되지 않은'값의 배열 일 것입니다. $.when

반환 값 GetReserva을 확인하여 약속을 반환하는지 확인하십시오.

편집

$.when는 구성 약속 중 하나가 거부되는 즉시 결과 약속을 거부합니다. 어쩌면 하나의 실패 ajax 전화가 발생하고, 모든 것을 단락시킬 수 있습니다.

+0

실제로는 ... 약속은 실제/초기화 된 객체입니다 ... 그리고 기다리는 시간은 언제입니까? 모든 약속이 완료 될 때까지 ... 언제든지 완료되면 발사됩니다! – Leonardo

+0

'GetReservation()'이 무엇을 반환하는지, 게시되지 않았는지, 게시 된 함수가 콜백인지,'GetReservation()'함수가 무엇을 반환 할 수 있는지 어떻게 알 수 있습니까? – adeneo

+0

GetReservations는'$ .ajax()'를 반환합니다 ... – Leonardo