2017-12-03 3 views
1

서블릿에 요청하는 JavaScript가 있습니다. 요청은 작동하지만 1 초의 지정된 시간 간격으로 반복 할 수는 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?JavaScript에서 "SetInterval"로 예기치 않은 동작이 발생했습니다.

프론트 엔드 개발 및 JavaScript에 대한 새로운 지식이 있습니다. 아래에이 블록의 내부에 넣어 당신이 원하는

$(document).ready(function() { 
     $('#userName').blur(function(event) { 
       var name = $('#userName').val(); 
       setInterval($.get('JqueryServlet', { 
         userName : name 
       }, function(responseText) { 
         $('#ajaxResponse').text(responseText);}), 1000); 
     }); 
}); 
+2

[setInterval 콜백의 가능한 복제본은 한 번만 실행] (https://stackoverflow.com/questions/10182714/setinterval-callback-only-runs-once) – Xufox

답변

1

아무것도 :

setInterval(function(){ 
    alert("I will be called in 3 second and again after 3 seconds"); 
}, 3000); 

이와 지금을 시도해보십시오

$(document).ready(function() { 
    $('#userName').blur(function(event) { 
      var name = $('#userName').val(); 
      setInterval(function(){ 
       $.get('JqueryServlet', { 
        userName : name 
       }, function(responseText) { 
        $('#ajaxResponse').text(responseText); 
       }); 
      }, 1000); 
    }); 
}); 
2

setIntervalwith the argumentssetInterval(callbackFunction, timingInMilliseconds) 작동합니다.

$.get에 전화를 걸고있는 것처럼 보입니다. 직접 callbackFunction 인수에 표시됩니다. 이 불행히도 $.get에 대한 호출 결과가 함수 자체가 아닌 인수로 전달되므로 작동하지 않습니다. 함수를 전달했다 할지라도 적절한 인수를 사용하여 호출되지 않습니다.

대신 익명 함수 호출에 포장 또는 기능에 배치,과 같이 :

function getServlet() { 
    // code 
} 
setInterval(getServlet, 1000); // to go off every 1 second 

을 또는 :

setInterval(function() { 
    // code 
}, 1000); 

을 직접 setInterval$.get를 사용하여 주장하는 경우, 당신은 할 수 다음과 같이 사용하십시오 :

setInterval(function(a,b,c){ 

     console.log(a + b +c); 

    }, 500, "a", "b", "c"); 

대부분의 브라우저에서 당신이 호출 setInterval를 사용할 수 위의 전자 링크) :

setInteval(callbackFunction, timingInMilliSeconds, callbackArg, callbackArg, ...); 
1

어떤 흐림 이벤트에 당신은 간격의 새로운 인스턴스를 생성하고 메모리에 유지하고, 충돌을 야기하는 글로벌 간격 심판 개체를 만들고으로 설정 간격을 참조 할 수 있습니다 이전 간격으로 새 간격을 시작하십시오.

관련 문제