js xmlhttp ajax 超时时间,如何为XMLHttpRequest设置超时和ontimeout?

覆盖XMLHttpRequest用自己的版本。 我不建议这样做,但有时如果您需要直接与使用XMLHttpRequest的代码集成,您可能会觉得您需要这样做。例如: (function() {

var realXMLHttpRequest = XMLHttpRequest;

XMLHttpRequest = function fakeXMLHttpRequest() {

realXMLHttpRequest.apply(this, arguments);

this.timeout = 2000;

this.addEventListener("timeout", function(e) {

// ...

});

};

XMLHttpRequest.prototype = realXMLHttpRequest.prototype;

})();

同样,我不推荐它,但它是可能的。

你在下面说过,上面的那个不适合你。如果不这样做,那是因为你使用的XMLHttpRequest实现让生活变得困难。此变通办法将工作: (function() {

var realXMLHttpRequest = XMLHttpRequest;

XMLHttpRequest = function fakeXMLHttpRequest(arg) {

var xhr;

if (typeof arg !== "undefined") {

// Some implementations allow for a non-standard argument, support them

xhr = new realXMLHttpRequest(arg);

} else {

// Normal case

xhr = new realXMLHttpRequest();

}

xhr.timeout = 2000;

xhr.addEventListener("timeout", function(e) {

// ...

});

return xhr;

};

XMLHttpRequest.prototype = realXMLHttpRequest.prototype;

})();

即使你new XMLHttpRequest调用它,因为new操作者的工作方式是,它创建对象并调用该对象的this功能,再new结果这一工程是那个对象,除非函数返回一个不同的非对象,如上面那样。

我提到我不推荐这个? ;-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值