如何在纯JavaScript中进行“同步”AJAX调用时显示“正在加载”?

时间:2011-11-05 08:36:18

标签: javascript ajax asynchronous xmlhttprequest synchronous

我想确保向用户显示结果,因此我进行同步AJAX调用。使用异步AJAX显示“加载”指示器非常简单(示例无处不在),但是当我使用XMLHttpRequest的同步AJAX调用时,加载指示器GIF图像根本不显示。

有人说在进行同步调用时无法显示指示符(阻止直到从服务器响应)。但我只是想问一下是否有办法做到这一点。

2 个答案:

答案 0 :(得分:8)

这是“不可能的”,因为Javascript是单线程的,同步调用会阻止对UI的更新。

但是,您可以在启动同步AJAX调用之前显示动画“加载”图形,并在成功或失败时将其删除。我相信大多数浏览器都能够继续渲染动画gif,即使技术上阻止了同步调用。

答案 1 :(得分:0)

有可能,请看这里的最佳答案: How to show waiting message during sync ajax call in browser

  

解决方案是显示您的加载消息,手动控制回到浏览器,然后使用同步远程调用锁定所有内容。一种方法是使用延迟为零的setTimeout