Что произойдет, если окно предупреждения отображается во время вызова ajax?


мне просто интересно, что может произойти, если во время выполнения вызова ajax пользователю будет предложено предупреждение в окне браузера.

допустим, например, что у меня есть вызов ajax

$.ajax({
    url: ...,
    type: GET/POST,
    ...
    success: function(data){
        console.log(data);
    },
    error: ...
});

это занимает много времени для завершения (10 сек). Во время выполнения вызова выдается простое предупреждение javascript

alert("hello!");

что происходит, например, если:

  1. AJAX-вызов начинается
  2. ajax вызов выборки данные
  3. предупреждения
  4. ajax call возвращает данные (окно оповещения все еще открыто!)

зная, что JS является однопоточным, я знаю, что выполнение скрипта остановится, мне просто интересно, что произойдет с вызовом/ответом ajax, если окно предупреждения не будет закрыто "вовремя".

Я надеюсь, что я был достаточно ясен и что это не "фиктивный" вопрос. Спасибо

2 52

2 ответа:

это не совсем трудно попробовать и увидеть... но ответ заключается в том, что предупреждение будет иметь приоритет и держать поток выполнения.

при закрытии предупреждения и предположении, что запрос AJAX завершен, пока предупреждение было открыто, тогда success функция будет обработана (или

HTTP-запрос будет продолжать выполняться и обрабатываться в фоновом режиме.

когда цикл обработки событий в JS становится свободным, readystatechange обработчик будет срабатывать.

некоторые промежуточные состояния готовности могут быть пропущены, поскольку цикл событий был занят, пока это состояние было истинным.