请帮我重构这个 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 查询来验证单个表单可能不好?也许应该将它合并到单个请求中,然后我们将在服务器端进行所有验证活动?我应该如何重构这段代码?