如果在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调用返回数据(警报窗口仍然打开!)

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

我希望我很清楚,这不是一个“虚拟”的问题。 谢谢

这不是很难尝试看…但答案是,警报将优先,并阻止执行stream程。

在closures警报时,假设AJAX请求在警报打开时已经完成,那么successfunction将被处理(或errorfunction)。

请注意,AJAX请求将继续运行,同时显示警报(所以长时间运行的AJAX可以在警报打开的情况下进行处理),但只是在警报closures之前脚本无法继续处理请求。

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

另一点需要注意的是,在警报closures之后,脚本将处理AJAX响应之前继续执行函数的其余部分( alert之后的代码)。 这有助于certificate我的意思

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

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

某些中间就绪状态可能会被跳过,因为事件循环处于繁忙状态,而该状态为真。