"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 이벤트 처리를 최적화하고 JavaScript Anti-Shake에서 기능 호출을 줄이는 방법은 무엇입니까?

이벤트 처리를 최적화하고 JavaScript Anti-Shake에서 기능 호출을 줄이는 방법은 무엇입니까?

2025-04-13에 게시되었습니다
검색:347

How Does JavaScript Debouncing Optimize Event Handling and Prevent Excessive Function Calls?

제공된 코드 스 니펫은 그러한 함수의 구현을 요약합니다. var 타임 아웃; return function () { var context = this, args = argument; var later = function () { 시간 초과 = null; if (! 즉시) func.Apply (컨텍스트, args); }; var callnow = 즉시 &&! 타임 아웃; 클리어 타임 아웃 (시간 초과); 시간 초과 = settimeout (나중에 대기); if (callnow) func.Apply (컨텍스트, args); }; };

가 어떻게 작동하는지 이해하려면 각 부분을 분석하겠습니다. 즉시 true로 설정된 경우, 기능은 초기 호출에서 실행 된 다음 후속 통화에 지연을 적용합니다.

'timeout'variable :

는 보류중인 시간 초과 참조를 내부적으로 사용하는 데 사용됩니다. 시간 초과를 지우고 '즉시'가 거짓이면 Defounced 함수를 실행합니다.

function debounce(func, wait, immediate) {
  var timeout;
  return function() {
    var context = this, args = arguments;
    var later = function() {
      timeout = null;
      if (!immediate) func.apply(context, args);
    };
    var callNow = immediate && !timeout;
    clearTimeout(timeout);
    timeout = setTimeout(later, wait);
    if (callNow) func.apply(context, args);
  };
};
'즉시'플래그가 설정되어 있고 타임 아웃이 이미 실행 중인지 확인합니다. 그것이 true로 평가한다면, 그것은 함수가 즉시 실행되어야 함을 의미합니다.

    함수가 호출되면 먼저 지연된 실행에 대한 올바른 컨텍스트와 인수를 할당합니다. false 또는 'callnow'는 false이며, 시간 초과는 지정된 지연 기간 후에 함수를 실행하도록 설정됩니다. 시간 초과가 만료되기 전에 다른 호출이 발생하면 시간 초과가 재설정됩니다.
  • 지연 기간이 경과 한 후 '타임 아웃'변수가 지워지고 '즉시'가 거짓 인 경우 기능이 실행됩니다. 불필요하거나 반복적 인 기능 호출.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3