如果在ajax调用期间显示警告窗口,会发生什么情况?
我只是想知道如果在执行ajax调用时会在浏览器窗口中向用户发出提示,会发生什么情况。
比方说,我有一个Ajax调用
$.ajax({ url: ..., type: GET/POST, ... success: function(data){ console.log(data); }, error: ... });
需要很长时间才能完成(10秒)。 当调用被执行时,会引发一个简单的javascript警报
alert("hello!");
以下情况会发生什么情况:
- ajax调用开始
- ajax调用获取数据
- 显示警报
- ajax调用返回数据(警报窗口仍然打开!)
知道JS是单线程的我知道脚本执行将停止,我只是想知道如果没有及时closures警报窗口,ajax调用/响应会发生什么。
我希望我很清楚,这不是一个“虚拟”的问题。 谢谢
这不是很难尝试看…但答案是,警报将优先,并阻止执行stream程。
在closures警报时,假设AJAX请求在警报打开时已经完成,那么success
function将被处理(或error
function)。
请注意,AJAX请求将继续运行,同时显示警报(所以长时间运行的AJAX可以在警报打开的情况下进行处理),但只是在警报closures之前脚本无法继续处理请求。
这是一个工作示例 ,请注意,在警报closures之前,数据不会写入控制台。
另一点需要注意的是,在警报closures之后,脚本将在处理AJAX响应之前继续执行函数的其余部分( alert
之后的代码)。 这有助于certificate我的意思
HTTP请求将继续运行并在后台处理。
当JS事件循环变为空闲时,readystatechange处理程序将触发。
某些中间就绪状态可能会被跳过,因为事件循环处于繁忙状态,而该状态为真。