javascript - 함수 조절과 관련하여 타이머의 fn.appplay()가 이상하게 느껴지나요?
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-14 10:52:57
0
2
724

코드는 복잡하지 않고, 로직도 매우 간단하며, 기능 제한이 있어서 코드를 직접 넣었습니다.

으아악

이론적으로 브라우저 창의 크기를 계속해서 변경하면(즉, 간격이 1초 미만이어야 함) doSomthing 从第二次开始是不会被执行的。因为我在不断的执行 cleraTimeout,实际运行结果是 console.log('第'+count+'次执行) 确实没有被打印出来,但是当我停止改变浏览器窗口的时候,发现打印出来的 count 并不是 1그리고 이는 큰 숫자입니다.

이 코드는 다음을 보여줍니다.

으아악

setTimeout() 里的匿名函数没有被执行,但是匿名函数里的 fn.apply() 그런데 실행이 되었는데, 원리를 알려주세요? 아니면 내 코드 자체에 문제가 있는 걸까요?

女神的闺蜜爱上我
女神的闺蜜爱上我

모든 응답(2)
代言

setTimeout에 있는 것 외에도

에 으아악

브라우저 크기를 변경하면 else의 이 fn.apply가 임계값 밀리초마다 실행됩니다

그래서 setTimeout确实只执行了一次,其余的次数是else里的fn.apply는 실제로 한 번만 실행되고 나머지 시간은 else

의 🎜에 의해 실행됩니다.
某草草

하나의 크기 변경 작업은 여러 onresize를 트리거합니다. 처음에는 else의 콘텐츠가 트리거되고, 다른 하나는 if의 콘텐츠를 트리거합니다. setTimeout 전에clearTimeout()을 작성했기 때문에 마지막 setTimeout의 콘텐츠가 실행됩니다. . 이므로 크기를 한 번 변경하면 doSomthing이 두 번 트리거되고 인쇄된 횟수는 최소 2만큼 달라집니다. 각 크기 변경의 작업 이벤트가 250ms보다 크고 1s보다 작으면 count 값이 더 커집니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿