【问题标题】:Close specific XMLHttpRequest关闭特定的 XMLHttpRequest
【发布时间】:2019-06-30 12:45:48
【问题描述】:

如何“重建”函数来关闭特定的 XMLHttpRequest?我已经在函数外部定义了变量,可以在我需要的任何地方调用xhr.abort();。现在可以,使用此解决方案,如果同时运行多个 XMLHttpRequest,则关闭 last 运行 - 进程 在 last 之前运行在将 xhr 替换为 re- 后不受控制拨打_ajax()

var xhr;

function _ajax(data, callback) {
  xhr = new XMLHttpRequest();
  xhr.open('POST', window.location.pathname, true);
  xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      callback(this);
    }
  };
  xhr.send(data);
}

/* close fnc */
xhr.abort();

【问题讨论】:

    标签: javascript ajax xmlhttprequest


    【解决方案1】:

    您可以将xhr 用作数组并将所有请求存储在那里;然后你可以对其中任何一个调用 abort 。喜欢:

    var xhr=[];
    function _ajax(data, callback) {
        xhr.push(new XMLHpptRequest);
        //etc
    }
    xhr[0].abort();
    xhr.shift(); //get rid of the aborted request
    

    【讨论】:

    • 看起来像一半,我希望 XMLHpptRequest 中存在一些标识符来定义一个特定的,因为这种方式使用索引.. - 简单地说,我无法想象能够定义一个,当元素被随机插入到数组中
    • 这只是一种跟踪所有请求的简单方法。我以为你想按 FIFO 顺序中止它们,这就是 push() 和 shift() 正在做的事情。如果您可以指定您想要的顺序,我会尝试更完整地回答
    • 我的请求是关闭一个特定的 XMLHttpRequest,但是函数中带有参数的关联数组可以满足我的需要 -> _ajax(data, callback, name)xhr["namehere"].abort() -> 所以你的注释很有用,谢谢
    猜你喜欢
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2012-10-30
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多