为什么在回调已经可用时将其作为参数传递是必要的

时间:2016-08-23 09:24:01

标签: javascript callback

在Javascript中

为什么有必要将回调函数作为参数传递给调用函数,而它已在全局范围内可用?

1 个答案:

答案 0 :(得分: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,而不是直接从gotUserName功能调用getAjax?< / p>

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