복붙노트

[JQUERY] 어떻게 AJAX 요청 주기적으로 해고?

JQUERY

어떻게 AJAX 요청 주기적으로 해고?

해결법


  1. 1.다른 사람들이 지적했듯이하여 setInterval과의 setTimeout 트릭을 할 것입니다. 나는 폴 아일랜드어로이 우수한 비디오에서 배운 것을 좀 더 고급 기술을 강조하고 싶었 : http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/

    다른 사람들이 지적했듯이하여 setInterval과의 setTimeout 트릭을 할 것입니다. 나는 폴 아일랜드어로이 우수한 비디오에서 배운 것을 좀 더 고급 기술을 강조하고 싶었 : http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/

    이상 (느린 연결에 HTTP 요청 등) 반복 간격보다 복용 끝낼 수 있습니다 정기적 인 작업 것이 최선의 setInterval을 사용하지 않는 (). 첫 번째 요청이 완료하고 다른 하나를 시작하지 않은 경우, 당신은 당신이 공유 자원을 소비하고 서로 굶어 여러 요청이 상황에서 끝낼 수 있었다. 당신은 마지막 하나가 완료 될 때까지 다음 요청을 예약 대기하여이 문제를 방지 할 수 있습니다 :

    // Use a named immediately-invoked function expression.
    (function worker() {
      $.get('ajax/test.html', function(data) {
        // Now that we've completed the request schedule the next one.
        $('.result').html(data);
        setTimeout(worker, 5000);
      });
    })();
    

    단순화를 위해 나는 스케줄링을위한 성공 콜백을 사용했다. 이것의 아래 쪽은 하나 개의 실패한 요청 업데이트를 중지 것이다. 이를 방지하려면 전체 콜백을 대신 사용할 수 있습니다 :

    (function worker() {
      $.ajax({
        url: 'ajax/test.html', 
        success: function(data) {
          $('.result').html(data);
        },
        complete: function() {
          // Schedule the next request when the current one's complete
          setTimeout(worker, 5000);
        }
      });
    })();
    

  2. 2.예, 당신은 당신이 실행하고자하는 코드를 호출하는 자바 스크립트의 setTimeout () 메서드 또는에서는 setInterval () 메소드를 사용할 수 있습니다. 여기에서는 setTimeout와 함께 할 수있는 방법은 다음과 같습니다

    예, 당신은 당신이 실행하고자하는 코드를 호출하는 자바 스크립트의 setTimeout () 메서드 또는에서는 setInterval () 메소드를 사용할 수 있습니다. 여기에서는 setTimeout와 함께 할 수있는 방법은 다음과 같습니다

    function executeQuery() {
      $.ajax({
        url: 'url/path/here',
        success: function(data) {
          // do something with the return value here if you like
        }
      });
      setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
    }
    
    $(document).ready(function() {
      // run the first time; all subsequent calls will take care of themselves
      setTimeout(executeQuery, 5000);
    });
    

  3. 3.당신의 setTimeout이나 setInterval을 사용할 수 있습니다.

    당신의 setTimeout이나 setInterval을 사용할 수 있습니다.

    차이점은 - 에서는 setTimeout 한 번만 기능을 트리거 한 다음 다시 설정해야합니다. 중지하도록 지시하지 않는 한 setInterval을 다시하고 다시 발현을 유발 유지


  4. 4.나는 아래의 코드를 시도

    나는 아래의 코드를 시도

        function executeQuery() {
      $.ajax({
        url: 'url/path/here',
        success: function(data) {
          // do something with the return value here if you like
        }
      });
      setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
    }
    
    $(document).ready(function() {
      // run the first time; all subsequent calls will take care of themselves
      setTimeout(executeQuery, 5000);
    });
    

    이것은 지정된 간격 예상대로 작업 페이지가 완전히로드되지 않은 않았다과 기능을 지속적으로 불려졌다. 그것의 더 나은에서는 setTimeout (하는 executeQuery를, 5000)를 호출합니다; 이하와 같은 별도의 외부 기능하는 executeQuery ()

    function executeQuery() {
      $.ajax({
        url: 'url/path/here',
        success: function(data) {
          // do something with the return value here if you like
        }
      });
      updateCall();
    }
    
    function updateCall(){
    setTimeout(function(){executeQuery()}, 5000);
    }
    
    $(document).ready(function() {
      executeQuery();
    });
    

    의도 한대로이 정확히했다.

  5. from https://stackoverflow.com/questions/5052543/how-to-fire-ajax-request-periodically by cc-by-sa and MIT license