Что произойдет, если окно предупреждения отображается во время вызова ajax?
мне просто интересно, что может произойти, если во время выполнения вызова ajax пользователю будет предложено предупреждение в окне браузера.
допустим, например, что у меня есть вызов ajax
$.ajax({
url: ...,
type: GET/POST,
...
success: function(data){
console.log(data);
},
error: ...
});
это занимает много времени для завершения (10 сек). Во время выполнения вызова выдается простое предупреждение javascript
alert("hello!");
что происходит, например, если:
- AJAX-вызов начинается
- ajax вызов выборки данные
- предупреждения
- ajax call возвращает данные (окно оповещения все еще открыто!)
зная, что JS является однопоточным, я знаю, что выполнение скрипта остановится, мне просто интересно, что произойдет с вызовом/ответом ajax, если окно предупреждения не будет закрыто "вовремя".
Я надеюсь, что я был достаточно ясен и что это не "фиктивный" вопрос. Спасибо
2 ответа:
это не совсем трудно попробовать и увидеть... но ответ заключается в том, что предупреждение будет иметь приоритет и держать поток выполнения.
при закрытии предупреждения и предположении, что запрос AJAX завершен, пока предупреждение было открыто, тогда
success
функция будет обработана (или
HTTP-запрос будет продолжать выполняться и обрабатываться в фоновом режиме.
когда цикл обработки событий в JS становится свободным, readystatechange обработчик будет срабатывать.
некоторые промежуточные состояния готовности могут быть пропущены, поскольку цикл событий был занят, пока это состояние было истинным.