2012-08-13 5 views
5

는 : 코드에서 작성된 물론jQuery.ready()는 자체 호출을 어떻게 처리합니까? 예를 들어

$(function(){ 
    //do stuff 
    $(function(){ 
     //do other stuff 
    }); 
}); 

이 아무 의미가없는 것 같다. 그러나 HTML 요소와 함께 작동하는 플러그인은 .ready()를 주 스크립트의 .ready() 요소에서 실행되는 동안 사용할 수 있습니다. jQuery는 이것을 어떻게 정확히 처리합니까? 그것은 명확하게 작동하지만 특별한 일을합니까?

답변

2

DOM을 초기화 한 후에 .ready()를 호출하면 전달 된 새 처리기가 즉시 실행됩니다.

이것은 제 기능이 실행될 때, 내측 하나

또한 즉시

실행된다는 것을 의미, jQuery는 하나의 이벤트로 여러 가지 기능을 결합 할 수 있으며 전체 (전혀 가정하지 이들을 호출)`리턴 (`.ready (전) _synchronously_ 같이

jQuery(document).ready(function(){ 
     for(i=0;i<1000000;i++); 
     console.log('2'); 
    }); 
console.log('1'); 
+1

이 그것을이다 "즉시"하나는 이미로드 페이지에서 실행하여 동작을 테스트 할 수 있습니다

오류)를 생산? – nnnnnn

+0

예, 그것은 sinchronous입니다. 이미로드 된 페이지에서 이것을 실행하여 테스트 할 수 있습니다. jQuery (document) .ready (function() {for (i = 0; i <1000000; i ++) {;}; console.log ('2');}); console.log ('1'); –

+0

나는 이것을 얻는다 :'global .ready() START, 0ms; 전역 .ready() END, 8ms; 플러그인 .ready()() START, 11ms; 플러그인 .ready() END, 12ms'. 결과는 전역 .ready의 시작이나 끝에서 플러그인을 호출하는지 여부에 관계없이 일정합니다. 따라서 플러그인 내부의 .ready 호출은 호출 된 이미 실행중인 .ready 후에 대기열에있는 것처럼 보입니다. – Armatus