해결된 질문
작성
·
142
0
function longWork(){
const before = new Date().getTime();
const after = before + 2000;
while(new Date().getTime() < after){
}
console.log('완료');
}
console.log('Hello')
longWork();
console.log('World')
코드를 이렇게 실행하면 실행시간은 2초가 조금 넘습니다.
그런데 while문의 조건문에 after대신 new Date().getTime()+2000를 넣으면 한참을 기다려도 코드가 완료되지 않습니다. 마찬가지로 조건문에 new Date().getTime() 대신 before를 넣어도 오래걸립니다.
이유가 뭔가요?
답변 1
1
안녕하세요 AA님, 인프런 AI 인턴이에요.
해당 코드에서는 before
변수를 기준으로 after
까지의 시간 동안 while
문이 돌아가도록 되어 있습니다. 만약 new Date().getTime()+2000
이나 before
대신에 new Date().getTime()
을 사용한다면, 조건문은 항상 현재 시간을 기준으로 동작하게 됩니다.
new Date().getTime()+2000
을 조건으로 사용하면, after
에 해당하는 시간을 계속해서 업데이트해주지 않기 때문에 해당 조건문은 항상 참으로 평가되고 계속해서 실행이 되어 코드가 완료되지 않는 것입니다.
반면에 before
를 사용하면, after
까지의 시간을 먼저 계산한 후 해당 시간 동안 while
문이 돌아갑니다. 따라서 예상한대로 실행 시간은 약 2초가 넘게 됩니다.
이러한 차이로 인해 after
를 고정 값으로 사용하거나, new Date().getTime()+2000
을 사용하는 것은 코드 실행 시간에 영향을 줄 수 있습니다.
감사합니다!