files/en-us/web/api/xmlhttprequesteventtarget/timeout_event/index.md
{{APIRef("XMLHttpRequest API")}} {{AvailableInWorkers("window_and_worker_except_service")}}
The timeout event is fired when progression is terminated due to preset time expiring.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("timeout", (event) => { })
ontimeout = (event) => { }
A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}.
{{InheritanceDiagram("ProgressEvent")}}
In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available.
total. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead.Content-Length (the size of the body of the message), and doesn't include the headers and other overhead.const client = new XMLHttpRequest();
client.open("GET", "http://www.example.org/example.txt");
client.ontimeout = () => {
console.error("Timeout!!");
};
client.send();
You could also set up the event handler using the {{domxref("EventTarget/addEventListener", "addEventListener()")}} method:
client.addEventListener("timeout", () => {
console.error("Timeout!!");
});
You can use the timeout event to detect an upload that stopped because it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page.
The timeout is set on the {{domxref("XMLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property.
// In case of a 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);
{{Specifications}}
{{Compat}}