2016-08-23 53 views
0

在Javascript中为什么需要通过回调作为参数时,它已经是可用

为什么需要通过回调函数作为参数调用函数,而它已经可以在全球范围内?

+3

因此,目标函数知道哪个全局可用函数要调用? (如果这不是一个令人满意的答案:请指出您的意思,并附带示例代码?) –

+0

“虽然它已经在全球范围内可用”---而*在全球范围内有哪些*? – zerkms

+0

@zerkms:我的意思是说全球范围内已提供被调用函数 – Zeeshan

回答

0

如果我正确理解你的问题,你有一个场景是这样的:

function gotUserName(name) { 
    alert('User name is: ' + name); 
} 

function getUserName(id) { 
    getAjax('/getuser/' + id, gotUserName); 
} 

function getAjax(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     callback(xhr.responseText); 
    } 
    }; 
    xhr.open("GET", url, true); 
    xhr.send(); 
} 

如果你问的不是你为什么要通过gotUserName作为回调,然后调用callback,直接从getAjax函数调用gotUserName

虽然这肯定是可能的,但简单的答案是,getAjax可以用于更多的ajax请求,而不仅仅是获取用户名。您通过回调不会使其可用,但为了避免在getAjax内部对其进行硬编码。

+0

感谢David。明白了你的观点 – Zeeshan

相关问题