0
수 백 줄의 JS 기능이 있습니다. 이전 호출을 실행하기 전에 함수가 다시 호출되지 않도록해야합니다.끝나기 전에 다시 실행하는 기능
var executing = false;
function myFunc(){
//stop executing if it's already executing
if(executing){
return false;
}
executing = true;
/* the main function with ajax-calls etc */
$.ajax({
type: "POST",
url: "/"+method+action,
data: "a=1",
success: function(data){
//the inner function logic...
executing = false;
}
}
합니까 당신에게 거짓보고한다 :
그래서 나는이 시도? 내 결함은 어디에 있습니까? 어쩌면 오류는 게시되지 않은 코드의 다른 곳에서 발생합니다. 의견을 보내 주셔서 감사합니다!
제공되는 조각은 * "작동합니다." 그러나 고려해야 할 몇 가지 경우 : 1. 뭔가 다른 '실행'을 변경합니다 (AJAX 호출이 완료되기 전에 다른 이벤트가 트리거 될 수 있음을 기억하십시오). 또한'execution'은 더 큰 범위에서 쓸모없는 일반적인 이름입니다; 2) AJAX 호출이 실패하면 어떻게됩니까?; 3) 큐잉? 4) * 구문 오류를 수정합니다 (예를 들어 닫는')'). – user2246674
감사합니다. "실행 중"을 변경하는 것은 없습니다. 아약스 호출이 실패하면 항목이 추가되지 않기 때문에 아무런 문제가 없습니다 (끝없는 스크롤에서 항목을 더 많이로드 할 때 사용합니다). 큐잉? 조금 더 설명해 주시겠습니까? –
다음 요청을 삭제하고 싶지는 않을 것입니다. 사용자가 자동 완성 기능을 수행하고 X 입력 (AJAX 호출 시작)을 한 다음 XY로 XY (실로 폰)로 정제 된 단어를 표시하고 싶다고 가정합니다. 뿐만 아니라 X (제논). 이 간단한 예제를 처리하는 간단한 방법은 뛰어난 XHR 호출을 취소하는 것입니다. XHR 객체를 별도의 bool 대신에 센티넬으로 사용하는 것이 좋습니다. – user2246674