Вот простой отрывок для выполнения Ajax-запроса
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', true);
req.send(null); // First - send the request
// Then bind for the "result"
req.onreadystatechange = function (e) {
if (req.readyState == 4 && req.status == 200) {
// ...
}
};
Что я здесь делаю:
- Отправка Ajax-запроса.
- А затемпривязка для обратного вызова результата.
Если вы считаете этот код многопоточным - очевидно, что вы можете связать с onreadystatechage
после завершения запроса (из-за планирования), и он никогда не будет вызван.
Но в коде на основе реактора это будет работать так, как ожидалось, все время, так как реактор не будет работать до тех пор, пока весь мой код не завершит работу для этой итерации.
Как обстоят дела в браузерах?Было ли это где-то задокументировано?
Не обращайте внимания на тот факт, что Ajax-запрос медленный, и на практике это может никогда не произойти.Я просто привожу это в качестве асинхронного примера (подумайте, websocket, если ajax слишком медленный для вас).