우리는 AJAX 웹 응용 프로그램을 가지고 있으며 우리가 공통적으로 갖고있는 패턴은 하나씩 차례로 호출하는 수많은 ajax 호출입니다. 이는 첨부 된 여러 엔터티가있는 항목을 저장할 때 일반적입니다. 예 : saveCustomer() ->saveCustomerAddress() ->saveCustomersOrder() 일 수 있습니다. methodA()가이 성공하면 첫 번째 방법, 즉,이 등 (아래 코드 참조) methodB()를 호출하고 있도록체인 AJAX 호출을위한 패턴을 찾고
우리는 현재 그것이있다. 이 패턴의 단점은 무엇이 진행되고 있는지보기가 정말로 어렵다는 것입니다. methodA()을 읽는 경우 메서드 이름을 읽지 않아도 메서드 B() 및 메서드 C()이 호출됩니다. 다른 단점은 체인을 변경하려는 경우 많은 코드를 다시 작성해야하며 메서드를 개별적으로 호출하려는 경우 메서드 다운 스트림을 호출하기 때문에 수행 할 수 없다는 것입니다.
function Tester() {
this.url = 'https://public.opencpu.org/ocpu/library/';
this.save = function() {
this.methodA();
}
this.methodA = function() {
var self = this;
$.ajax({
url: self.url,
async: true
}).always(function (processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
//check for errors... and if OK
alert('A OK');
self.methodB();
})
}
this.methodB = function() {
var self = this;
$.ajax({
url: self.url,
async: true
}).always(function (processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
//check for errors... and if OK
alert('B OK');
self.methodC();
})
}
this.methodC = function() {
var self = this;
$.ajax({
url: self.url,
async: true
}).always(function (processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
//OK
alert('C OK');
})
}
}
new Tester().save();
나는 더 나은 패턴을 찾기 위해 머리를 긁적입니다. 콜백 함수에서 나중의 메서드를 마무리 할 수있는 방법을 생각한 다음 각 메서드를 통해 전달하지만 실제로이 방법에 접근 할 방법이 확실하지 않습니다.
체인 방법을 사용할 때 메소드 의존성을 제거 할 수있는 일반적인 유형의 패턴을 알고있는 사람이 있습니까?
사용 약정. jQuery에는이 라이브러리 나 다른 라이브러리가있다. 여기를보십시오 : http://stackoverflow.com/questions/11539605/chain-of-jquery-promises 또는 여기 http://www.dotnetcurry.com/showarticle.aspx?ID=1022 –
아니면, 덜 고급, 그냥 콜백을 사용합니다 ... – Bergi