Я смущен тем, как использовать объект отложенного jQuery, и примеры, которые я видел, не помогают мне. Я хочу сделать: 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
}
Я не могу понять, как сделать populateCalendar() ждать, пока loadCalendarData() не будет сделано, хотя. Это ...
$.when(getCalendar(myDate, 70))
.then(loadCalendarData)
.then(populateCalendar(a, b, c))
.fail(alertCalendarError);
..., очевидно, неправильно - это просто один из вариантов я бросил к стене, потому что я не понимаю, что я делаю ... :)
ОБНОВЛЕНИЕ: Как правильно указывать GoldenNewby и Brian ONeil, я мог бы просто использовать мой вызов для заполнения календаря в конце loadCalendarData. Это определенно сработает. Хотелось бы, чтобы я подумал об этом, когда отправлял. Я предполагаю, что моя конечная цель состояла в том, чтобы выяснить, как добиться последовательности. В этом случае, однако, я не могу представить ни одного сценария, в котором loadCalendarData будет вызываться без вызова populateCalendar непосредственно после него, поэтому это решение имеет смысл. Благодарю.
Можете ли вы не просто вызвать populateCalendar как последнюю строку loadCalendarData? – GoldenNewby
Это определенно сработает, спасибо. Извините, однако, я забыл упомянуть, что я пытаюсь сохранить эти функции как независимые друг от друга, насколько это возможно. Пример, который я дал, - это загрузка страницы, но, возможно, после этого можно вызвать и функцию. В основном я пытаюсь склонить голову к отложенным словам, и это был пример того, что я не мог понять, как это сделать. –