해결된 질문
작성
·
262
0
안녕하세요. 질문이 하나 있습니다.
setImmediate가 즉시 실행되는 것처럼 보여도 백그라운드 - 테스크 큐 - 호출 스택 과정을 거치기 때문에 그 전에 clearImmediate를 하면 취소된다는 것은 이해했습니다.
궁금한 건 아래인데요,
const immediate2 = setImmediate(() => {
console.log('x');
});
clearImmediate(immediate2);
여기에서 clearImmediate(immediate2);가 실행되어 'x'가 출력되지 않는, 일련의 시간 순서가 잘 이해되지 않습니다.
immediate2의 백그라운드 - 테스크 큐 - 호출 스택 과정보다 clearImmediate가 앞선 과정인지 어떻게 알 수 있는 건가요? 저는 찍어보기 전까지는 모를 것 같있는데 강사님은 미리 예측을 하신 것으로 보여 어떻게 그걸 알 수 있는지 궁금합니다. 감사합니다.
답변 1
1
const immediate2 = setImmediate( // 호출스택
() => { console.log('x'); } // 백그라운드로 넘어가는 함수
);
clearImmediate(immeidate2); // 호출스택 -> 백그라운드보다 우선이므로 백그라운드 것이 실행되기 전에 취소 가능
이렇게 보시면 편합니다.
백그라운드 함수들은 호출스택이 비어 있어야 실행될 수 있습니다. setImmediate와 clearImmediate 모두 호출스택에 들어가는 함수이므로 호출스택이 비어있는게 아니니깐 백그라운드 함수보다 먼저 실행되는 것입니다.
아 바로 이해됐습니다 빠른 답변 감사합니다