2016-08-15 3 views
1

백본 js를 사용 중이며 페치 작업이 시작된 경로를 기반으로합니다. 따라서 서로 다른 경로에 대해 서로 다른 컬렉션의 가져 오기 작업이 시작되고 페이지보기가 콘텐츠로 업데이트됩니다. Dom이 업데이트 될 때까지 기다렸다가 다른 경로로 진행하면 문제가 없습니다. 그러나 경로를 즉시 전환하면 백그라운드에서 두 번의 반입 작업이 진행되고 처음부터보기가 업데이트 된 다음 바람직하지 않은 두 번째보기가 업데이트됩니다. 주변을 검색하고 abort()를 호출 할 수있는 jqxHr 객체를 반환하는 작업을 가져 오기 위해 변수를 할당 할 수 있음을 알게되었습니다. 보류중인 모든 요청을 풀에 저장하고 모두 취소하는 방법에 대해서도 알게되었습니다.정의되지 않음 : TypeError xhr.abort가 함수가 아닙니다. 백본

다음은 코드가 경로를 통해 구현되도록 노력하고 있습니다.

var collection = new TableCollection(); 
var xhr = collection.fetch(); 
xhr.abort(); 

그러나

정의되지 않음으로 실행하고 있습니다 : 형식 오류의 xhr.abort는 함수가 아닙니다 : 백본

내가 (XHR)를 CONSOLE.LOG 때 나는이가있는 객체를 가져옵니다 속성 :

Object {}always:()catch: (a)done:()fail:()pipe:()progress:()promise: (a)state:()then: (b,d,e)__proto__: 

Jquery 3.1.0, Backbone 1.3.3, Underscore 1.8.3을 사용하고 있습니다.

모든 조언과 제안이 도움이 될 것입니다.

답변

0

그래서 문제를 발견했습니다.

페치 콜을 캐시하는 데 사용 된 외부 대체보기 backbone-fetch-cache.js를 사용하고있었습니다. 이 라이브러리는 백본의 기본 가져 오기 작업을 재정의합니다. 그것은 정상적인 jqXhr 객체 대신 promise 객체를 반환하고있었습니다. 그래서 jqXhr 객체를 반환하기 위해 기존 라이브러리를 수정하고 약속이 아니며 중단 메서드에 액세스 할 수있었습니다.

관련 문제