찾다

 >  Q&A  >  본문

javascript - setTimeout 문제 정보

왜 사용시간이 항상 5000ms인지 이해가 안가나요? 왜 항상 첫 번째는 6000이고 두 번째는 7000이라고 생각하는 걸까요?

过去多啦不再A梦过去多啦不再A梦2824일 전386

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

  • 黄舟

    黄舟2017-05-19 10:24:28

    이런 경우입니다. setTimeout의 지연 시간은 호출된 시간을 기준으로 합니다. 이때 첫 번째 차단 시간인 1000ms는 setTimeout의 5000에 포함되며 이후에도 같은 방식으로 실행됩니다. 5000ms 이후에는 setTimeout의 지연 시간이 이전보다 2000ms를 초과했는지 판단하게 되며, 이를 초과하면 실제로는 시간을 사용하는 시간이 MAX(setTimeout, while()) 값이 됩니다. )

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:24:28

    settimeout이 스택에 푸시되더라도 차단이 없고 시간에 도달하는 한 지연 시간은 변경되지 않습니다. 첫 번째 차단 1000ms가 실행된 다음 5000ms 지연된 차단의 1000ms가 실행됩니다. 두 번째 차단은 5000ms 후에 실행됩니다. 즉시 실행되고 2000ms 지연됩니다.

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