이것은 단지 코드 수준에서 디오 나 스로틀 링이 어떻게 작동하는지 설명하려는 또 다른 기사가 아닙니다. 오히려 이것은 개념을 기억하고 시각화하여 실제로 작업에 적용 할 수 있도록 개념을 시각화하는 그림입니다.
개인적으로, 나는 종종 비난과 조절의 개념을 잊어 버린다. 그래서 누군가가 나에게 설명 해달라고 요청하거나 인터뷰에서 질문이 나타나면 단지 깜박임? 이를 피하기 위해 기억을 새로 고치는 데 도움이되는 간단한 페이지를 만들었습니다. 사기꾼이 따라가는 것처럼 느끼고 싶지 않다면?.
아래 코드펜에서는 분해와 스로틀 모두에 대해 지연을 2 초로 설정했습니다. 임의의 음식 품목을 클릭하고 일시 중지하십시오.
페이지 링크
식당에 있고 음식을 주문하고 싶다고 상상해보십시오. 그래서 테이블에서 메뉴를 선택하면 모든 품목을 읽기 시작합니다. (공유 한 웹 페이지에서 다른 음식 품목을 클릭하는 것은 메뉴 항목을 읽는 것과 동일합니다)
여기
그리고 식당에는 당신을 섬길 수있는 세 가지 유형의 웨이터가 있다고 상상해보십시오 :
항목을 언급 할 때마다 메모를합니다
각 개별 품목에 대해 주방으로 달려갑니다메뉴를 읽기 시작하면 주문을 받기 전에 2 초 동안 잠시 멈출 때까지 기다릴 것입니다.
API 호출을하기 전에 사용자가 타이핑을 완료하기를 기다리는 것을 좋아합니다2 초마다 한 번만 주문을받습니다
2 초 안에 여러 항목을 언급하면 모두 같은 순서로 진행됩니다Debouncing : 활동을 기다립니다 (버튼 클릭) 지정된 시간 동안 중지하기 위해스로틀링 : 활동이 중지 된 시점에 관계없이 정기적으로 트리거
어쨌든 왜 쇠약하거나 스로틀을 타는가?
- 또한 2 초만 제가 예를 들어 TimePeriod
일 수 있습니다.- 설명
js에서 이벤트 핸들러는 특정 이벤트 (클릭, 타이핑 또는 스크롤)가 발생할 때 실행되는 기능 일뿐입니다.
기본적으로,이 핸들러는 이벤트가 발생할 때마다 발사됩니다.
무슨 일이야?
예를 들어 API 호출을하는 버튼이 있습니다
// Basic event handler button.addEventListener('click', function() { console.log('Button clicked!'); }); // Basic keystroke handler input.addEventListener('keyup', function() { console.log('Key pressed!'); });function makeapicall () { Console.log ( "API Call Made"); } button.addeventListener ( 'click', () => { Makeapicall (); });
그러나 이벤트를 위해 매번 API 통화를 해고하는 것은 비효율적 일 수 있으며 대부분의 경우 이것은 당신이 찾고있는 것이 아닙니다. 이곳은 스로틀 링과 디포 킹이 그림에 들어오는 곳입니다.
function makeApiCall() { console.log("API call made"); } button.addEventListener('click', () => { makeApiCall(); });
디포 킹
나는 이것을 Lodash에서 가져올 수 있으므로 Debouncing 코드를 설명하지 않을 것입니다. 오히려 우리는 당신이 실제로 그것을 사용할 수있는 곳을 볼 것입니다.사용자가 일정 시간 동안 입력을 중지하거나 일정 시간 동안 클릭을 중지 한 경우에만 API 호출을 원할 때 DeCouncing을 사용하십시오.
이 예제에서 사용자가 5 분 동안 버튼을 계속 클릭하면 API 호출이 한 번만 이루어집니다.
사용자는 클릭을 중지해야합니다.
클릭 중지 중지 2 초 동안 평균 수단 버튼을 클릭하지 않아야합니다.
조절판
스로틀은 간격과 같습니다. 사용자가 멈출 때까지 기다리고 싶지 않을 때는 이것을 사용하십시오.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3