XMLHttpRequestEventTarget: timeout 事件

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

当预设时间过期导致进度终止时,会触发 timeout 事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("timeout", (event) => { })

ontimeout = (event) => { }

事件类型

一个 ProgressEvent。继承自 Event

Event ProgressEvent

事件属性

除了下面列出的属性之外,父接口 Event 的属性也可使用。

lengthComputable 只读

一个布尔值,指示底层进程的待完成总工作量以及已完成工作量的可计算性。换句话说,它告知进度是否可衡量。

loaded 只读

一个 64 位无符号整数值,表示底层进程已完成的工作量。通过将此属性的值除以 total,可以计算出已完成工作的比例。使用 HTTP 下载资源时,此值仅包含 HTTP 消息的正文,不包括标头和其他开销。

total 只读

一个 64 位无符号整数,表示底层进程正在执行的总工作量。使用 HTTP 下载资源时,这对应于 Content-Length(消息正文的大小),不包括标头和其他开销。

示例

与 XMLHttpRequest 的用法

js
const client = new XMLHttpRequest();
client.open("GET", "http://www.example.org/example.txt");
client.ontimeout = () => {
  console.error("Timeout!!");
};

client.send();

您还可以使用 addEventListener() 方法设置事件处理程序。

js
client.addEventListener("timeout", () => {
  console.error("Timeout!!");
});

与 XMLHttpRequestUpload 的用法

您可以使用 timeout 事件来检测因速度过慢而停止的上传。有关上传文件并显示进度条的完整代码示例,请参见主 XMLHttpRequestUpload 页。

超时在 XMLHttpRequest 对象上使用 XMLHttpRequest.timeout 属性进行设置。

js
// In case of an timeout we hide the progress bar
// Note that this event can be listened to on the xhr object too
function errorAction(event) {
  progressBar.classList.remove("visible");
  log.textContent = `Upload failed: ${event.type}`;
}
xhr.upload.addEventListener("timeout", errorAction);

规范

规范
XMLHttpRequest
# event-xhr-timeout
XMLHttpRequest
# handler-xhr-ontimeout

浏览器兼容性

api.XMLHttpRequest.timeout_event

api.XMLHttpRequestUpload.timeout_event

另见