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