このJavascriptコードをリファクタリングしてください。 スケジュールされたメッセージ送信(送信日付、返信タイプ、終了日/ qauntity、クレジットシステム - 実行時にスケジュールされた送信プランの総コストをカウントする必要がある)には大きなフォームがあります。 このフォームのJavascriptバリデーターを書いています。ネストされたAJAXコールバック関数の可読性
検証アルゴリズム 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);
}
}
});
}
、ここで1以上:
ScheduledValidator.validateTotalCost = function (params, form) {
...
このリスナーは、この関数を呼び出します
私はtで好きではありません一見してアルゴリズムを理解することはかなり難しいと考えています。 単一フォームの検証のために多くの(約6個の)ネストされたAJAXクエリを作成するのは良いことではないでしょうか? 単一の要求にマージする必要があるかもしれませんし、その後、サーバー側ですべての検証作業を行いますか? このコードをどのようにリファクタリングする必要がありますか?