2013-02-19 3 views
1

2 개의 자바 스크립트 파일이 포함 된 웹 페이지가 있습니다. 두 번째 파일에는 이전 파일이 필요합니다. 더 구체적으로 말하면, 제 2 자바 스크립트 파일에서 저는 즉시 jQuery의 .ajax() 메소드를 사용합니다. JQuery를 사용하려고 할 때 jQuery가 준비되지 않았을 가능성이 가장 큰 시나리오에서 가능합니까?브라우저 자바 스크립트 엔진은 항상 단일 스레드입니까?

참고 : $ (document) .ready()를 사용하고 싶지 않으며 require.js 또는 head.js와 같은 라이브러리를 사용하고 싶지 않습니다. JQuery를 사용할 때 jQuery가있을 것이라는 확신을 갖고 싶습니다. Javascript의 단일 스레드 특성은 가장자리의 경우에도 존중됩니다.

+0

AJAX를 사용하지 않는 한 스크립트는 발생하는 순서대로 동 기적으로 실행됩니다. (그리고 심지어 그들은 'readystatechange'가 다른 이벤트와 같은 스레드에서 보내집니다.)'async'와'defer'와 같은 속성에도 불구하고. – millimoose

+0

'$ (document) .ready()'가 jQuery의 일부이므로, 이것을 사용할 수 있다면 jQuery에서 다른 것을 사용할 수 있습니다. –

답변

2

특성이있는 <script>에 포함 된 스크립트가 순차적으로로드됩니다. 당신은 설정을 가지고 따라서 경우

<script src="one-file"></script> 
<script src="other-file"></script> 

... one-file해야 마무리 다운로드 및 구문 분석을 계속할 수 문서 전에 실행 (즉, 다른 파일의 검색도 시작하기 전에). 이는 deferasync 속성과는 다르지만 생략하는 경우 일 가능성이 큽니다.

내 대답이 너에게 충분한 평화의 마음이 아니라면, I gleaned it from the HTML spec itself.

5

$.ajax() 메서드를 사용해야하는 파일 앞에 jQuery가 참조되어 있으면 jQuery를 사용할 수 있다고 확신 할 수 있습니다.

그리고 분명히 $(document).ready()jQuery이 준비되었지만 DOM을 조작 할 준비가되어 있다는 것을 보장하지 않습니다.

2

예, 자바 스크립트는 엄격하게 단일 스레드이며 다음 스크립트가 구문 분석되기 전에 각 스크립트가 구문 분석됩니다.

첫 번째 스크립트를 요청하지 않고 두 번째 스크립트가 먼저 실행되지 않는 유일한 상황은 첫 번째 스크립트를 요청하지 못했지만 두 번째 스크립트를 요청했지만 스크립트가로드되지 않으면 거의 실패하는 것입니다.

0

다음을 읽어주십시오 : http://api.jquery.com/category/events/document-loading/, 코드가 페이지 시작 부분에서 언제 실행되는지는 기본적으로 설정되어 있습니다. 우려가 유효한 경우

$(function() {}; 

잘 모르겠어요 : 당신이 .ready $ (문서) (사용하려는 경우 우리 대부분은 그것을 보았다하지만 정말 더, 그것은이 필요한 것) 문제가되지 않습니다 또는 아닙니다. 앱을 테스트하여 스스로 알아낼 수없는 문제를 실제로 지정하지는 않았지만 jsript 코드가 multi-js 파일 환경에서 실행되기 전에 실행 중일 때 어떤 작업을 원할 수도 있습니다. . 다시 왜 그냥 ESP, 1을 사용하면 교칙에 익숙하지 않은 경우)입니다 : 당신의 JScript에서 How to load one JavaScript file from another? 부하 JScript를 어깨를 으쓱

$.getScript("another_script.js"); 
+0

알아. 인터넷 익스플로러 5.5 이후 모든 브라우저에서이 이론을 테스트 할 방법이 없었기 때문에 아주 개방적인 질문이었습니다. 동료가 그것을 가져오고 나는 이것에 대한 어떠한 증거도 찾을 수 없었다. – BumbleB2na

관련 문제