我想知道,如果在执行ajax调用时,在浏览器窗口中向用户提示一个警告,会发生什么情况。
例如,假设我有一个ajax调用
$.ajax({
url: ...,
type: GET/POST,
...
success: function(data){
console.log(data);
},
error: ...
});
这需要很长时间才能完成(10秒)。在执行调用时,会抛出一个简单的javascript警告。
alert("hello!");
例如,如果:
显示
知道JS是单线程的我知道脚本执行将停止,我只是想知道如果警告窗口没有“及时”关闭,ajax调用/响应会发生什么。
我希望我说得足够清楚,这不是一个“哑巴”问题。谢谢
发布于 2014-05-22 16:25:08
这并不是很难去尝试和理解...但答案是,警报将获得优先级,并阻止执行流程。
关闭警报时,假设AJAX请求在警报打开时已完成,则将处理success
函数(或error
函数)。
请注意,AJAX请求将在警报显示时继续运行(因此,长时间运行的AJAX可以在警报打开时进行处理),但只是在警报关闭之前,脚本无法继续处理请求。
Here is a working example,请注意,直到警报关闭时,数据才会写入控制台。
另一点需要注意的是,在警报关闭后,脚本将继续处理函数的其余部分(紧接在alert
之后的代码),然后再处理AJAX响应。This helps demonstrate what I mean
发布于 2014-05-22 16:26:20
HTTP请求将继续运行,并在后台处理。
当JS事件循环空闲时,readystatechange处理程序将触发。
一些中间就绪状态可能会被跳过,因为当该状态为真时,事件循环正忙。
https://stackoverflow.com/questions/23801386
复制相似问题