2014-04-07 4 views
3

검색 입력란에서 $ http 요청을 취소하려고 시도했지만 이전 요청이 중단 된 것 같지 않습니다. 다른 스택 오버 플로우 질문의 예제를 따랐다.

var canceler; 
$scope.someFunction = function() { 
     if(canceler) 
     canceler.resolve(); 
     canceler = $q.defer(); 
     $http({method: 'GET', url: service+url, timeout: canceler.promise}). 
      success(function(data, status, headers, config) { }); 
} 

HTML :

<input ng-change="someFunction" /> 

내가 함수가 두 번 호출되는 검색 상자 그러나 초기 요청에 두 개의 문자를 입력하면 여전히 거치는 여기 내 JS 코드입니다. 따라서 두 가지 요청이 모두 끝나고 응답 시간에 대해 보류 중으로 응답이 사용되는 것은 무작위입니다. 어떤 시점에서 도서관이 바뀌 었습니까? 나는이 작업을 잠시했지만 지금은 더 이상 작동하지 않습니다.

+4

귀하의 접근 방식이 올바르지 않다고 생각합니다. 입력 내용이 변경 될 때마다 서버를 스팸 처리하거나 요청을 취소해서는 안됩니다. 대신 사용자가 타이핑을 멈 추면 요청을 보내십시오 (예 : 입력이 변경 될 때마다 입력 변경이 타임 아웃을 지우고 새 것을 생성 할 때마다 서버에 접속하도록 200ms 타임 아웃을 설정하십시오.) - 이것이 일반적으로 수행되는 방법입니다 . – MMM

+0

MMM이 맞지만이 방법은 예상대로 작동해야합니다 (좋은 방법이 아닐지라도). – gkalpak

+0

그런 다음 내 접근 방식을 변경하고 그 문제가 해결되는지 확인합니다. – user1200387

답변

관련 문제