let i = 0;
let start = Date.now();
function count() {
do {
i++;
} while (i % 1e6 != 0);
if (i == 1e9) {
alert("처리에 걸린 시간: " + (Date.now() - start) + "ms");
} else {
// setTimeout(count); // 브라우저 동작 안멈춤
// Promise.resolve().then(count) //브라우저 동작 멈춤
}
}
count();
위 코드내 (1),(2) 주석을 각각 풀어서 브라우저 콘솔창에 실행했을떄
(1)은 코드가 수행되는동안 브라우저 동작이 멈추지않는반면에
(2)는 수행되는동안 브라우저가 멈추게 되는데요,
그렇단 건 Promise.resolve().then() 이 비동기로 동작하지 않는다는건데
console.log('시작')
Promise.resolve().then(()=>{console.log('promise')})
console.log('끝')
위 코드 실행시 만약 비동기로 동작하지 않는다면 시작 -> promise -> 끝 순으로 출력돼야 할텐데 왜 시작,끝,promise 순으로 비동기방식으로 출력되는건가요?