У меня есть код получения некоторых данных с помощью XMLHttpRequest
, который выглядит примерно так:XMLHttpRequest слушатели событий порядок исполнения
var myObject = new MyObject();
var req = new XMLHttpRequest();
req.addEventListener("load", function() {
myObject.data = req.responseText;
}, false);
req.addEventListener("loadend", function() {
myObject.save();
}, false);
req.open("GET", "http://www.example.com/foo.txt", true);
req.send(null);
В принципе, если запрос Ajax успешно, я хочу, чтобы сохранить данные, полученные в myObject
, и то независимо от статуса запроса Ajax, я хочу сохранить myObject
в базе данных. До сих пор он работал так, как планировалось, но я немного обеспокоен порядком исполнения слушателей load
и loadend
. Максимум, что я мог бы найти на это из XMLHttpRequest
living standard (относительно loadend
):
После одной ошибки, ABORt, тайм-аут или нагрузка была отправлена.
ли это гарантия того, что если запрос Ajax успешно, что load
слушатель закончить выполнение до loadend
слушателя начинается?
спасибо. Поэтому правильно ли я понимаю, что, когда событие (событие 1) «отправлено», все слушатели для него находятся в очереди и будут запускаться один за другим, все перед слушателями для событий, отправленных после события 1? – user3250365
@ user3250365: Да, они всегда запускаются один за другим. См. Также [запуск события] (https://dom.spec.whatwg.org/#concept-event-fire) и [диспетчерские события] (https://dom.spec.whatwg.org/#concept-event- отправка). В этом случае, похоже, не задействована даже очередь событий. – Bergi