2012-03-08 7 views
3

자바 스크립트에서 비동기 적으로 실행하려는 몇 줄의 코드가 있으므로 내 주 알고리즘의 속도가 느려지지 않습니다. 이 의사 코드를 참조하십시오자바 스크립트 : 비동기 적으로 실행될 함수를 작성하는 방법은 무엇입니까?

//main algorithm with critical code that should run as soon as possible 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//the rest of the time critical algorithm 
... 
... 
runInParallel(function(){ 
    //time consuming unimportant code to shows some progress feedback to user 
    ... 
} 
//and so on and so forth 

내가 자바 스크립트에서 비동기 코드를 작성하는 방법에 대한 유래를 검색하지만, 다음과 같은 질문에 내 유사하지 않은 :

나는이 목적을 위해 타이머를 사용할 수 있다고 생각합니다. 가능한 한 우선 순위가 낮은 메인 알고리즘과 병렬로 코드를 효율적으로 실행하는 함수 runInParallel()의 본문이 필요합니다. 누군가?

+0

우선 순위가 낮습니까? 나는 그런 방법이있을 것 같지 않다. –

+2

웹 작업자 검색 – user123444555621

답변

5

자바 스크립트에는 동기화/스레드 관리가 없습니다. 무언가를 비동기 적으로 실행하려면 함수가 완료 될 때 콜백과 결합 된 setTimeout을 사용할 수 있습니다.

var asyncHandle = setTimeout(function() { asyncCode(); callback(); }, 10); 

asyncHandle

은 함수가 호출되기 이전에 시간 제한을 취소하는데 사용될 수있다.

+0

웹 작업자의 소개 에서처럼이 방법은 상당히 쓸모가 없다. –

+2

동의하지 않습니다. 왜 그런 사소한 일에 대해 HTML 5 지원 클라이언트에 대한 지원을 제한해야합니까? –

+0

브라우저 공급 업체가 웹 표준을 수용하는 수단으로 웹 표준을 채택하는 것에 대해 논할 수는 있지만 이것은 완전히 다른 문제입니다. –

2

HTML5 지원 브라우저를 타겟팅하는 경우 HTML5 Web Workers으로 이동하십시오.

또한이 목적으로 언어 확장을 허용하는 매우 흥미로운, 꽤 오래된 JavaScript compiler을 사용해 볼 수도 있습니다.

관련 문제