Aidez-moi à refacturer ce code Javascript. Il y a une grande forme pour l'envoi programmé de message (date d'envoi, type de reccurence, date de fin/capacité, système de crédits - besoin de compter le coût total du plan d'envoi planifié dans l'exécution). J'écris un validateur de Javascript pour cette forme.Lisibilité des fonctions de rappel AJAX imbriquées
Il y a un algorithme de validation 1) vérifier si le temps de la date envoyer est pas dans un moment passé 2) vérifier si le temps de champ « fin par date » est supérieure à la première date d'envoi du temps 3) valider le coût total du plan de calendrier
(il environ 6 étapes, mais je viens d'écrire ici 3 d'entre eux - je pense que ce sera suffisant pour saisir le problème)
bouton « Enregistrer le plan prévu » a un javascript auditeur sur l'événement « clic ». Cet écouteur appelle cette fonction:
ScheduledValidator.checkIfSendDateTimeIsNotInPast(params, form);
est-il ici sa déclaration:
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);
}
}
});
}
Nous avons demande emboîtés plus tard:
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);
}
}
});
}
et un plus ici:
ScheduledValidator.validateTotalCost = function (params, form) {
...
Je n'aime pas approche de chapeau, qu'il est assez difficile de comprendre l'algorithme à première vue. Peut-être que ce n'est pas bon, de faire beaucoup (environ 6) de requêtes AJAX imbriquées pour la validation de formulaire unique? Peut-être qu'il devrait être fusionné à la demande unique et après que nous ferons toutes les activités de validation sur le côté serveur? Comment refactoriser ce code?