2011-09-10 7 views
17

이것은 자바 스크립트에 따르면 "스레드"이지만 코드는 기존 스레드 모델에 맞지 않는 것처럼 보입니다.자바 스크립트 새로 만들기 "스레드"

스레드의 개념과 관련하여이 코드를 명확하게 만들 수 있습니까?

function test() { 
    alert("Test"); 
} 

// this creates a new "thread," but doesn't make much sense to the untrained eye 
setTimeout(test, 0); 

분기 할 수있는 다른 방법이 있습니까?

답변

27

기본적으로 정상적인 흐름에서 test으로 전화를 걸면 가능한 한 빨리 엔진이 해당 기능을 실행합니다. 즉, text비동기식으로을 실행 중입니다.

는 동일을하는 의미있는 이름을 가진 함수를 만들 수있는 코드가 명확하게하려면 :
function executeAsync(func) { 
    setTimeout(func, 0); 
} 

executeAsync(function() { 
    alert("Test"); 
}); 

당신이 진짜 스레드를 원한다면

web workers를 보라.

+0

비동기 적으로 실행하면 스레드가 필요하지 않습니다. 감사! – skeggse

+2

웹 작업자는 대부분의 웹 응용 프로그램에 대한 옵션을 제공하지 않습니다. (링크 참조) 기본적으로 IE 10은이를 지원하는 첫 번째 버전입니다. http://caniuse.com/webworkers –

+1

@ komma8.komma1 님의 후기가 크게 변경되었습니다. 이제 거의 모든 브라우저에서 웹 작업자를 사용할 수 있습니다! –

관련 문제