2009-06-11 7 views
1

나는 며칠 전 jQuery에 익숙해졌으며 할 수있는 작은 마법을 깨닫기 시작했습니다.인수가있는 콜백은 어떻게 실행됩니까?

인자가있는 콜백이 jQuery에서 정확히 실행되는 방식, 즉 정확한 실행 순서가 무엇인지 궁금합니다. ,

나는 링크 http://docs.jquery.com/Tutorials:How_jQuery_Works

을 통해 가서 그것은 잘못된 방향으로

$.get('myhtmlpage.html', myCallBack(param1, param2)); 

올바른 방법 첫 번째 경우에

$.get('myhtmlpage.html', function(){ 
    myCallBack(param1, param2); 
}); 

말한다 myCallBack이 먼저 실행되고 반환 값이 argu로 작동합니다. 얻을 ment. 후자의 방법에서 get은 myCallBack에 의해 작동 될 웹 페이지를 반환합니다.

구문 적으로 어떻게 작동합니까? myCallBack은 여전히 ​​인수로 사용됩니까? 나는 이것에 대해 약간 혼란 스럽다.

건배

답변

3

이것은 실제로 아주 모호한 예입니다. 당신이 작성해야 :

$.get = function(url, callback){ 
    //make call to url 
    //when completed execute callback: 
    callback(param1, param2); 
} 

당신은 또한 다음과 같이 작성할 수있다 : :

$.get('myhtmlpage.html', myCallBack); 

도 함께 myCallBack를 호출합니다 내부적으로 jQuery를 이런 식으로 뭔가 (매우 간단)를 않기 때문에

$.get('myhtmlpage.html', function(param1, param2){ 
    myCallBack(param1, param2); 
}); 

즉 두 매개 변수

1

첫 번째 인스턴스에서는 myCallBack(param1, param2)이 즉시 평가되고 실행됩니다. 이 구문에서는 $.get()이 호출되기 전에 호출됩니다.

두 번째 인스턴스에서 나중에 사용하기 위해 myCallBack()을 묶는 익명의 익명의 함수가 정의됩니다. $.get()에 대한 매개 변수로 저장되며 $.get()이 호출 된 후에 만 ​​해고됩니다.

콜백에 대한 자세한 내용은 위키 백과의 Callback (computer science)을 참조하십시오.

0

이 구문을 사용하는 경우 :

myCallBack(param1, param2) 

당신이 당신이 함수를 호출하는 어떤 다른 시간과 같은 함수를 호출하고 결과를 점점하고 있습니다.

이 구문을 사용하는 경우 :

myCallBack 

당신은 함수를 호출하지만,이 구문은 콜백 함수로 myCallBack을 전달하는 데 사용할 수 있습니다 왜 기능을, 언급되지 않습니다.

세 번째 방법 :

function(){myCallBack(param1, param2);} 

가 myCallBack에 대한 호출로 구성 이름이 지정되지 않은 새 기능을 만듭니다. 이것은 함수 호출로 전달되거나 변수에 할당 될 수 있습니다.

이 예제에서는 param1과 param2가 익명의 함수에 바인딩되어 있지 않으므로이 구문을 사용하면주의해야합니다.이 매개 변수는 비어 있거나 값이 채워집니다. 포함 범위.

관련 문제