2013-01-04 2 views
0

Dojo를 사용하여 webservice에 대한 호출을 취소 할 수 있는지 알고 싶습니다. 내 문제는 예를 들어 사용자가지도에서 선택할 수있는 요소가 많다는 것과 그 중 하나를 클릭 할 때마다 웹 서비스에 대한 호출이 중요한 양의 데이터를 가져 오기 위해 실행된다는 것입니다. 이 작업에는 몇 초의 대기 시간이 필요합니다. 사용자가 5 개의 요소를 거의 동시에 클릭한다고 상상해보십시오. 선택한 요소 (마지막으로 클릭 한 항목)가 있지만 정보 패널에는 마지막 요소 정보가로드 될 때까지 클릭 한 이전 요소의 정보가 주기적으로 새로 고침됩니다.Dojo에서 서비스 요청 취소

나는 이전의 모든 통화를 취소하고 (가능한 경우) 마지막 통화 만 완료하도록 허용합니다. 나는 Dojo와 함께 일하고있다. 나는 문서를 보았다. 그러나 나는 유용한 것을 보지 못했다. "ajax.abort()"메소드와 같은 것이 내가 기대하는 것입니다.

나는 또한 호출을 관리하고 같은 URL에 대한 모든 호출을 대기열에 추가하여 데이터를 렌더링하는 마지막 호출 만 허용한다고 생각했지만이 방법으로는 여전히 기다려야했다. 모든 서비스 요청을 완료 한 다음 결과를 폐기하십시오. 계속 진행하는 적절한 방법은 이전 전화를 취소하는 것입니다.

의견이 있으십니까? 감사.

+1

debouncing (http://unscriptable.com/2009/03/20/debouncing-javascript-methods/)과 같은 것을 구현하여 서비스 호출이 중단되지 않도록 할 수 있습니다. – BuffaloBuffalo

+0

@BuffaloBuffalo 답장을 보내 주셔서 감사합니다! 내가 제안한 솔루션은 제대로 작동하지 않습니다. 왜냐하면 내가 관리하기 전에 수명주기를 실행하는 호출이 있기 때문입니다. 나는 "debounce"기능에 대한 링크를 읽었으며, 나의 필요에 조금 적응한 후에는 잘 동작하는 것처럼 보인다! 감사. – christiansr85

답변

0

일부 포럼 및 페이지에서 검색 한 결과, 다음 중 하나를 찾았습니다 : www.mike-griffith.com - Cancel dojo XHR in progress. 웹에서 "GET"서비스를 사용하고 있지만 "cancel()"메서드는 "POST"호출에도 사용할 수 있습니다.

그래서 동일한 URL로 통화를 취소하려면 서비스 호출 관리자를이 코드와 결합합니다. 호출을 취소 할 때 발생하는 오류를 피할 수있는 방법을 관리해야하지만이 작업은 다른 작업보다 훨씬 덜 중요합니다.