jQuery의 Deferred 객체를 사용하는 방법에 대해 혼란 스럽습니다. 내가하고 싶은 일은 1.) ajax 호출을 통해 달력 객체를 얻는다. 2.) 내 전역 객체 (MYOBJ)의 일부를 달력 데이터로 채운 다음, 3. MYOBJ의 새로운 데이터로 페이지 요소를 채운다. . 이 세 가지 기능은 로직을 구현하고, 나는 순서를 호출 할 :jQuery 지연된 객체, 순서대로 함수 호출
function getCalendar(refDate, numDays) {
return $.ajax({
type: "POST",
url: "services/Calendar.asmx/GetCalendar",
data: '{ "refDate": "' + refDate + '", "numDays": "' + numDays + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json"
}).promise();
}
function loadCalendarData(response) {
var calData = jQuery.parseJSON(response.d);
MYOBJ.cal.dMin = calData.dMin;
MYOBJ.cal.dMax = calData.dMax;
MYOBJ.cal.dates = calData.dates; // array of date strings
}
function populateCalendar (x, y, z) {
// use data from MYOBJ.cal here
}
그래도 이루어집니다() loadCalendarData 때까지 기다립니다) (populateCalendar를 만드는 방법을 알아낼 수 없습니다. 이 ...
$.when(getCalendar(myDate, 70))
.then(loadCalendarData)
.then(populateCalendar(a, b, c))
.fail(alertCalendarError);
은 ... 분명 잘못된 것입니다 - 그것은 내가 뭘하는지 이해하지 않기 때문에 나는 벽에 던져 한 단 하나의 변화입니다 ... :)
업데이트 : GoldenNewby와 Brian ONeil이 올바르게 지적 했으므로 loadCalendarData 끝에 populateCalendar에 대한 호출을 할 수 있습니다. 그것은 확실히 작동 할 것입니다. 제가 게시 할 때 그 생각을했으면 좋겠습니다. 내 궁극적 인 목적은 시퀀싱을 달성하는 방법을 파악하는 것이 었습니다. 그러나이 경우에는 loadCalendarData가 populateCalendar를 호출하지 않고 호출되는 시나리오를 생각할 수 없으므로이 솔루션은 분명히 의미가 있습니다. 감사.
loadCalendarData의 마지막 행으로 populateCalendar를 호출 할 수 없습니까? – GoldenNewby
그건 분명히 작동합니다, 고마워요. 미안하지만, 나는 가능한 한 서로의 기능을 독립적으로 유지하려고 노력하고 있다고 언급하는 것을 잊어 버렸다. 내가 준 예제는 페이지로드에서 나온 것입니다.하지만 그 중 하나의 함수가 호출 될 수 있습니다. 주로 나는 연기 된 것들에 대해 머리를 감싸려고 노력하고 있는데, 이것은 어떻게해야 하는지를 알 수없는 무언가의 예입니다. –