이 자바 스크립트 코드를 리팩터링하는 데 도움을주세요. 예약 된 메시지 전송을위한 큰 형식이 있습니다 (날짜, 응답 유형, 날짜 별/수량 단위, 크레딧 시스템 - 런타임에 예약 된 전송 계획의 총 비용 계산 필요). 이 양식에 자바 스크립트 검사기를 쓰고 있습니다.중첩 된 AJAX 콜백 함수의 가독성
검사 알고리즘 1) 보낼 날짜 시간이 지난 순간 이 아닌 경우 확인) "날짜 종료"있는지 확인 필드 시간 후 큰이 첫 번째 전송 날짜 시간 3) 일정 계획의 총 비용을 확인
(이 약 6 단계,하지만 난 그냥 여기 3 중 쓰기 - 나는 문제를 파악하기에 충분 생각)
을 "스케줄 계획을 저장"버튼을 "클릭"이벤트에 자바 스크립트 리스너를 가지고있다. 여기
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) {
...
이 청취자는,이 함수를 호출
나는 t를 좋아하지 않아. 처음에는 알고리즘을 이해하기가 매우 어렵다는 것을 알게되었다. 단일 폼의 유효성 검사를 위해 여러 (약 6) 중첩 된 AJAX 쿼리를 만드는 것이 좋지 않을 수 있습니다. 아마도 단일 요청에 병합되어야하며 그 후에는 서버 측에서 모든 유효성 검사 작업을 수행합니까? 이 코드를 어떻게 리팩터링해야합니까?