**간단한 JavaScript 조절 기능이 조절 기간 후 최종 실행을 제거하는 이유는 무엇입니까?**

DDD
풀어 주다: 2024-10-27 00:41:30
원래의
482명이 탐색했습니다.

**Why does the Simple JavaScript Throttle Function Eliminate the Final Execution After the Throttle Period?**

JavaScript의 간단한 조절

JavaScript는 lodash 및 밑줄을 포함하여 조절 기능을 위한 다양한 도구를 제공합니다. 그러나 이러한 라이브러리가 과도할 수 있는 경우에는 사용자 정의 조절 구현이 바람직합니다.

기존 조절 기능 및 과제

제공되는 조절 기능은 작동하지만 문제를 제시합니다. 스로틀 기간이 만료된 후 마지막으로 기능을 실행합니다. 이로 인해 기능이 여러 번 실행되어서는 안 되는 시나리오에서 원치 않는 동작이 발생할 수 있습니다.

향상된 스로틀 기능

이 문제를 해결하려면 다음과 같은 향상된 스로틀 기능을 고려하세요. 스로틀 기간 이후 최종 실행을 제거합니다.

function throttle(func, wait, options) {
  var context, args, result;
  var timeout = null;
  var previous = 0;
  if (!options) options = {};
  var later = function() {
    previous = options.leading === false ? 0 : Date.now();
    timeout = null;
    result = func.apply(context, args);
    if (!timeout) context = args = null;
  };
  return function() {
    var now = Date.now();
    if (!previous && options.leading === false) previous = now;
    var remaining = wait - (now - previous);
    context = this;
    args = arguments;
    if (remaining <= 0 || remaining > wait) {
      if (timeout) {
        clearTimeout(timeout);
        timeout = null;
      }
      previous = now;
      result = func.apply(context, args);
      if (!timeout) context = args = null;
    } else if (!timeout &amp;&amp; options.trailing !== false) {
      timeout = setTimeout(later, remaining);
    }
    return result;
  };
};
로그인 후 복사

이 업데이트된 기능은 선행 및 후행 에지 트리거링을 위한 선택적 매개변수와 함께 구성 가능한 조절 메커니즘을 제공합니다.

간소화된 스로틀 기능

사용자 정의 기능이 필요하지 않은 경우 더 간단한 스로틀 기능은 다음과 같습니다.

function throttle (callback, limit) {
    var waiting = false; 
    return function () { 
        if (!waiting) { 
            callback.apply(this, arguments); 
            waiting = true; 
            setTimeout(function () { 
                waiting = false; 
            }, limit);
        }
    }
}
로그인 후 복사

이 구성 불가능한 기능은 복잡한 옵션 없이 대상 기능을 지정된 시간 간격으로 스로틀합니다. .

위 내용은 **간단한 JavaScript 조절 기능이 조절 기간 후 최종 실행을 제거하는 이유는 무엇입니까?**의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!