찾다

 >  Q&A  >  본문

javascript - setTimeout 실행 시간 문제 정보

으아악

A2

으아악

으아악

C(클로저 사용)

으아악

질문:

1. A와 A2의 시간 설정에 있는 i*3000i值为多少?(1?),为什么时间依旧是3000,没有和i값은 함께 계산되나요? 클로저(C)를 사용한 후에도 여전히 3000ms마다 팝업이 표시됩니다.

2. A와 B의 차이점은 무엇인가요? i*30003000console팝업의 차이점, 이 차이점은 C 클로저에도 반영됩니다. 왜 그런 차이가 있습니까?

JS의 큐 실행 구조를 본 적이 있는데, setTimeout과 같은 함수는 실행을 시작하기 전에 다른 코드가 실행될 때까지 기다려야 한다는 것을 알고 있습니다. setTimeouts가 여러 개인 경우 시간 길이에 따라 우선 순위가 할당됩니다. 설정 (설정시간이 먼저 짧아집니다.) . 왜 이렇게 차이가 나는지 정말 모르겠고, 아직도 잘 모르겠어요 - -

으아악

아직도 3초마다 뜹니다console,去掉num*그러더니 한꺼번에 뜹니다. 곱셈 연산이 수행되지 않습니까?

滿天的星座滿天的星座2723일 전799

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

  • 欧阳克

    欧阳克2017-06-14 10:56:39

    1. setTimeout每隔3000ms弹出一个的话,时间不应该是3000,6000,9000,12000吗,你是不是跟setInterval搞混了。
      然后再说一点setTimeout(fn,time),这是个函数的执行,setTimeout的创建与主js是同步的(这个时候time的值就已经确定了),异步的是其中的fn的执行(执行的时候再去找内部的i或者num 폐쇄 등으로 인한 영향을 줄일 것입니다.)

    2. 사이트에서 이벤트 루프 js를 검색해 보면 반복되는 질문과 설명이 많을 텐데요.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-06-14 10:56:39

    setTimeout的延迟是相对于你运行它的那一刻,你这个for모든 지연을 한 번에 반복하고 설정합니다. 첫 번째는 현재 시간을 기준으로 3초이고, 두 번째는 현재 시간을 기준으로 6초이고, 세 번째는 현재 시간을 기준으로 9초입니다. 등. 결국 3초마다 출력에 반영되는거 아닌가...

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