AJAX - 正确使用异步XMLHttpRequest

时间:2014-07-02 13:29:20

标签: javascript ajax asynchronous xmlhttprequest

我可以想到使用XMLHttpRequest的两个简单方案。 第一个是:

var xxx = new XMLHttpRequest();
xxx.onreadystatechange = function() {
  if (xxx.readyState === 4) {
    if (xxx.status === 200) ...
    else ...
  }
};

function getData() {
  xxx.open('get', 'zzz.php');
  xxx.send(null);
}

第二个是:

function getData() {
  var xxx = new XMLHttpRequest();
  xxx.onreadystatechange = function() {
    if (xxx.readyState === 4) {
      if (xxx.status === 200) ...
      else ...
    }
  };
  xxx.open('get', 'zzz.php');
  xxx.send(null);
}

虽然第一个方案对我更有意义 (即使getData函数完成,xxx对象仍然保持活动状态), 这是全部展示的第二个例子。怎么运作? 在从getData函数立即返回时,不应该杀死xxx对象吗?

1 个答案:

答案 0 :(得分:0)

  • 大部分时间它都会被摧毁,但是在功能上 getDate你创建了一个被称为a的匿名函数 以后再说。
  • 创建该功能后,它会继承' getData的范围 功能
  • 因此,当执行getDate时,唯一引用的内容 xxx对象就是匿名函数。
  • 如果您真的想要了解更多信息,可以使用谷歌的JavaScript关闭手段'。这应该会给你更深刻的洞察力。