찾다

 >  Q&A  >  본문

javascript - 함수 조절과 관련하여 타이머의 fn.appplay()가 이상하게 느껴지나요?

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

으아악

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

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

으아악

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

女神的闺蜜爱上我女神的闺蜜爱上我2827일 전765

모든 응답(2)나는 대답할 것이다

  • 代言

    代言2017-06-14 10:54:57

    setTimeout에 있는 것 외에도

    에 으아악

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

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

    의 🎜에 의해 실행됩니다.

    회신하다
    0
  • 某草草

    某草草2017-06-14 10:54:57

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

    회신하다
    0
  • 취소회신하다