2016-10-18 4 views
1

배경을 실행하는 간격 방법이있는 경우 현재 함수가 중간에서 멈추고 간격 방법을 수행 한 다음 현재 함수로 돌아갈 수 있습니까? 예를 들어자바 스크립트 런타임 동작 및 간격 정보

:

setInterval(bar, 1000); 

function foo(){ 
    a(); 
    b(); 
    c(); 
} 

foo(); 

는 가서 bar 또는 bar는 현재 함수 이후에만 실행됩니다 할 예를 들어 b()에 도달 할 때 (foo)이 이루어집니다 수 있습니까?

추신 : 나는 Chrome에서 어떻게 작동하는지 묻습니다.

답변

1

아니요, 불가능합니다. 간격은 이벤트 루프 (대기열)에 추가되며이 이벤트 대기열의 새 항목은 호출 스택이 비어있을 때만 선택됩니다. 즉, 새 항목이 대기열에서 처리되기 전에 foo이 실행을 완료해야합니다. 또한, 간격을 통해 추가 된 기능은 foo이 완료 될 때까지 실행되지 않을뿐만 아니라 UI 이벤트 및 네트워크 요청 콜백과 같은 다른 모든 기능도 수행됩니다.

Here is이 대기열이 무엇인지 설명하는 좋은 대화입니다.

+0

기본적으로 js의 모든 함수 호출이 차단됩니다. – shinzou

+0

'차단'의 의미에 따라 다릅니다. 당신은 그것을 쓰레드와 어떻게 비교합니까? –

+0

차단 기능은 마치 C 또는 C++의 일부 입력 기능처럼 끝날 때까지 아무 일도 일어나지 않게합니다. – shinzou