Пожалуйста, помогите мне рефакторировать этот код Javascript.
Существует большая форма для отправки сообщений по расписанию (дата отправки, тип повторения, конец по дате / количеству, система кредитов - необходимо подсчитать общую стоимость плана запланированной отправки во время выполнения).
Я пишу валидатор Javascript для этой формы.
Есть алгоритм проверки
1) проверить, если время отправки отправлено не в прошлый момент
2) проверьте, больше ли время поля «конец по дате», чем время первой отправки
3) подтвердить общую стоимость плана плана
(там около 6 шагов, но я просто напишу здесь 3 из них - думаю, этого будет достаточно, чтобы понять проблему)
Кнопка «Сохранить запланированный план» имеет прослушиватель javascript для события «click». Этот слушатель вызывает эту функцию:
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-запросов для проверки единой формы?
Может быть, он должен быть объединен с одним запросом, и после этого мы будем выполнять все действия по проверке на стороне сервера?
Как я должен рефакторинг этого кода?