2013-06-04 3 views
2

requirejs가 파일을로드 할 때까지 javascript를 차단하는 방법이 있습니까?계속하기 전에 파일을로드 할 때까지 requirejs 대기

콜백이 없기 때문에 다음과 같이하면 효과가 있다고 생각합니다.

var requireFile = require(['example']); 

그러나 여전히 비동기입니다.

콜백을 지정하면 example이로드 될 때까지 차단하는 방법이 있습니다. 콜백을 실행하십시오.

예를 들면.

require(['example'], function(){ 
    console.log('hello'); 
}); 
console.log('world'); 

콘솔 따라서해야한다 :

헬로

- 세계

내가보고하고

- 세계

헬로

답변

0

반환 될 때까지 차단할 수 없습니다. 그러나 당신은 보통 할 필요가 없습니다.

당신은 아마 '필요'의 반환에 따라 일부 코드가

, 그 코드는 이미이있을 때

그것은 문제가 될 수있다 콜백에 가서 (또는 콜백 내부에서 호출되는) 필요 코드의 무리 그러나 그것을하는 유일한 길.

때때로 다른 코드가 필요한 코드가로드 될 때까지 실행되지 않을 수 있습니다.

경우에 따라 실행을 건너 뛸 수 있으며 나중에 실행됩니다. 때로는 '무언가'를 찾고 계속 타이머를 설정해야합니다. 그렇다면 타이머를 설정해야합니다.

+1

예, 필자는 실행할 다른 콜백 코드가 필요합니다. 콜백으로 코드를 이동하는 것은 우리의 프레임 워크가 작동하는 방식 때문에 실제로 옵션이 아닙니다. – Decrypter

+0

조언을 주셔서 감사합니다. requirejs가로드를 완료했는지 확인하는 방법이 있습니까? – Decrypter

+0

가장 좋은 방법은 그것이 무엇이든로드되고 활성 상태인지 확인하는 것입니다. 일반적으로 윈도우 나 문서에서 무언가를 정의하거나 DOM 요소에 값이나 함수를 추가합니다. 활성화되어 있는지 확인하십시오. –

4

함수에서 지연시키려는 코드를 래핑 한 다음 require 콜백에서 해당 함수를 호출 할 수 있습니다.

require(['example'], function(){ 
    console.log('hello'); 
    world(); 
}); 

function world() { 
    console.log('world'); 
} 
+4

이 방법은 챔피언처럼 작동합니다. 조금 비동기 적으로 떨어 뜨리십시오. [베이비, 스튜가 생겼습니다] (https://www.youtube.com/watch?v=Sr2PlqXw03Y) – deepelement

관련 문제