난 당신이 후백본 -보기
사이를 전환 할 수 있습니다 파단 아약스 호출이 기본보기에 '성공'DIV, 성공적으로 가져가있는 상자가있는 기본보기가 제거 된 후 지연된 실행을 방지 가 표시됩니다.
내가 직면하는 문제는 하위 뷰 사이를 전환하면 이전 뷰의 가져 오기에서 지연된 약속이 실행되고 'success'div가 표시된다는 것입니다.
var fetchXhr = this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
fetchXhr.abort();
}
을 나는 몇 가지가 있습니다
this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
this.subview.unbind();
this.subview.remove();
}
이 SO 질문 abort-ajax-requests-using-jquery 당신이이 연기에 포인터를 저장하고과 같이) (중단 호출하여 중지 할 수 있습니다 말한다 :
이
내 코드입니다 각 하위 뷰를 가져오고 일부는 일정 간격으로 반복됩니다. 즉, 모든 가져 오기 요청을 저장하고 각각에 중단을 호출하는 루프를 반복해야합니다.지연된 함수가 실행되지 않도록하는 더 좋은 방법이 있습니까? 예 : 하위 뷰가 제거되었는지 확인하는 일종의 검사 또는 모든 지연 약속을 바인딩 해제하는 함수?
큰 소리로 생각하면 목록에 하위보기에 대한 모든 가져 오기를 추가 한 다음 onChangeSubview를 반복하여 반복 할 수 있으며 예를 들어 중단을 실행할 수 있습니다. 'this.fetches.forEach (function (fetchXhr) {fetchXhr.abort();})''또는'_.invoke (this.fetches, 'abort');'당신이 밑줄 방식으로하고 싶다면). 잠재적으로이 기능을 확장하여 기본 뷰에 배치 할 수도 있으므로 일부를 추상화 할 수 있습니다. – Dymos
@Dymos +1. 당신은 너무 겸손합니다. 그것은 논평이 아니라 실제 답변입니다.) – hashchange
하하 감사합니다 :-) 나는 후손을위한 대답으로 그것을 추가 할 것입니다. – Dymos