如果在ajax调用期间显示警告窗口会发生什么

What happens if an alert window is shown during an ajax call?

本文关键字:窗口 什么 警告 显示 ajax 调用 如果      更新时间:2023-09-26

我只是想知道如果在执行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调用返回数据(警告窗口仍然打开!)

知道JS是单线程的,我知道脚本执行将停止,我只是想知道如果警报窗口没有"及时"关闭,ajax调用/响应会发生什么。

我希望我说得够清楚了,这不是一个"愚蠢"的问题。谢谢你

这并不难理解…但答案是,警报将占据优先级,并阻碍执行流程。

关闭警报后,假设在警报打开时AJAX请求已经完成,则将处理success函数(或error函数)。

请注意,在显示警报时,AJAX请求将继续运行(因此,长时间运行的AJAX可以在警报打开时进行处理),但只是您的脚本不能继续处理请求,直到警报关闭。

这是一个工作示例,请注意,在关闭警报之前,数据不会写入控制台。

需要注意的另一点是,在警报关闭后,脚本将继续执行函数的其余部分(alert之后的代码),然后处理 AJAX响应。这有助于演示
的含义。

HTTP请求将继续运行并在后台处理。

当JS事件循环空闲时,readystatechange处理程序将被触发。

一些中间就绪状态可能会被跳过,因为当该状态为true时事件循环正忙。