2014-03-04 3 views
0

누군가가 내 질문을 중복으로 표시 할 수도 있지만 그외의 경우 callbackJavaScript에 혼동스럽게합니다. 나는 here의 코드자바 스크립트의 콜백 목적

getText = function(url, callback) // How can I use this callback? 
{ 
var request = new XMLHttpRequest(); 
request.onreadystatechange = function() 
{ 
    if (request.readyState == 4 && request.status == 200) 
    { 
     callback(request.responseText); // Another callback here 
    } 
}; 
request.open('GET', url); 
request.send(); 
} 
function mycallback(data) { 
    alert(data); 
} 
getText('somephpfile.php', mycallback); //passing mycallback as a method 

의 다음 부분을 읽고 지금은 위의 코드를 변경하고 이제 차이가 지금의

getText = function(url) //Also remove from here How can I use this callback? 
{ 
var request = new XMLHttpRequest(); 
request.onreadystatechange = function() 
{ 
    if (request.readyState == 4 && request.status == 200) 
    { 
     mycallback(request.responseText); //Now here i simply call that function 
    } 
}; 
request.open('GET', url); 
request.send(); 
} 
function mycallback(data) { 
    alert(data); 
} 
getText('somephpfile.php'); //Remove (passing mycallback as a method) 

을 다음과 같이 callbacks를 제거하면? 차이가없는 경우 왜 사용해야합니까? callbacks

+1

[JavaScript에서 콜백을 사용하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/7070495/why-use-callback-in-javascript-what-are-its-advantages) –

답변

1

그럼 이제 차이점은 무엇입니까? 차이가 없다면 콜백을 사용해야하는 이유

첫 번째 기능은 더 일반적 (재사용 가능)입니다. 당신은이 모든 작업을 수행 할 수 있습니다

getText('somephpfile.php', console.log); // or 
getText('somephpfile.php', alert); // or 
getText('somephpfile.php', mycallback); // or 
getText('somephpfile.php', yourcallback); // or 
getText('somephpfile.php', whatever); 

다르게 동작 것이다. 두 번째 함수에서 getText은 아약스 데이터를 경고하는 것 외에는 사용할 수 없습니다.

+0

여전히 혼란 스럽습니다 – Blu

+0

정확히 무엇이 명확하지 않습니까? 실제로 "콜백"을 제거하는 [콜백] (https://en.wikipedia.org/wiki/Callback_ (computer_programming))에 대한 매개 변수가 없다는 것은 함수에'return' 문이없는 것과 같습니다. – Bergi

+0

'콜백 (callback) '을 호출하고'함수'에서'매개 변수 '로 전달하지 않는 실제'function'을 호출하면'callback'으로 나중에 호출하기 위해'function'을'parameter'로 보냅니다. – Blu