Пожалуйста, помогите мне реорганизовать этот код Javascript. Существует большая форма для запланированной отправки сообщений (дата отправки, тип повторения, дата окончания/количество, система кредитов - необходимо подсчитать общую стоимость запланированного плана отправки во время выполнения). Я пишу валидатор Javascript для этой формы.
Существует алгоритм проверки 1) проверьте, не находится ли время даты отправки в прошлом моменте 2) проверьте, больше ли время поля «конец по дате», чем время первой даты отправки 3) проверьте общую стоимость плана расписания
(там около 6 шагов, но я просто пишу здесь их 3 - думаю будет достаточно для понимания задачи)
Кнопка «Сохранить запланированный план» имеет прослушиватель javascript в событии «щелчок». Этот слушатель вызывает эту функцию:
ScheduledValidator.checkIfSendDateTimeIsNotInPast(params, form);
Вот его декларация:
ScheduledValidator.checkIfSendDateTimeIsNotInPast = function (params, form) {
var conn = new Ext.data.Connection();
conn.request({
url: CONST.BASE_URL + 'url',
params: params,
callback: function (options, success, response) {
response = Ext.util.JSON.decode(response.responseText);
if (response.success == false) {
// display error messages
} else {
ScheduledValidator.checkIfEndDateIsGreaterThatSendDate(params, form);
}
}
});
}
У нас есть вложенный запрос позже:
ScheduledValidator.checkIfEndDateIsGreaterThatSendDate = function (params, form) {
var conn = new Ext.data.Connection();
conn.request({
url: CONST.BASE_URL + 'url2',
params: params,
messageForm: form,
callback: function (options, success, response) {
response = Ext.util.JSON.decode(response.responseText);
if (response.success == false) {
// display error messages
} else {
ScheduledValidator.validateTotalCost(params, form);
}
}
});
}
и еще один здесь:
ScheduledValidator.validateTotalCost = function (params, form) {
...
Мне не нравится в этом подходе то, что с первого взгляда сложно понять алгоритм. Может быть, нехорошо делать много (около 6) вложенных запросов AJAX для проверки одной формы? Может быть, его следует объединить в один запрос, и после этого мы будем выполнять все действия по проверке на стороне сервера? Как мне реорганизовать этот код?