【发布时间】:2014-05-22 08:19:02
【问题描述】:
我只是想知道如果在执行 ajax 调用时,在浏览器窗口中向用户提示警报会发生什么。
例如,假设我有一个 ajax 调用
$.ajax({
url: ...,
type: GET/POST,
...
success: function(data){
console.log(data);
},
error: ...
});
这需要很长时间才能完成(10 秒)。在执行调用时,会抛出一个简单的 javascript 警报
alert("hello!");
例如会发生什么情况:
- ajax 调用开始
- ajax 调用获取数据
- 显示警报
- ajax 调用返回数据(警报窗口仍然打开!)
知道 JS 是单线程的,我知道脚本执行会停止,我只是想知道如果警报窗口没有“及时”关闭,ajax 调用/响应会发生什么。
我希望我已经足够清楚了,这不是一个“虚拟”问题。谢谢你
【问题讨论】:
-
+1 好问题。我确实使用警报作为穷人的断点,但是从来没有遇到过问题.. 我不记得在单击 OK 恢复脚本之前等待的时间比常规连接超时时间长.. 我 认为浏览器(被视为 javascript 引擎和布局引擎的“包装器”/“驱动程序”)将/应该继续运行并停止 javascript 引擎,这样 ajax 数据就会排队等待进一步执行。但这不是一个正确的(参考和现实生活)答案..
-
我也使用警报来向用户提示消息.. 我认为这不是一个很好的解决方案:(
-
旁注,总是可以覆盖
window.alert(在原型设计期间将它们用作模型消息/断点之后)以(驱动)自定义函数。 -
没想到……不错。
-
警报与需要很长时间才能运行的函数没有什么不同。想一想如果:1. ajax 调用开始,2. ajax 调用之后,立即调用very_time_sumption_function,3. ajax 调用在very_time_sumption_function 完成之前返回数据,(现在怎么办?) 4.very_time_sumption_function 完成,5. 现在怎么办?现在您看到警报与否根本没有任何区别。
标签: javascript ajax single-threaded