显示具有async = false的ajax调用的等待屏幕

时间:2014-12-05 03:03:19

标签: jquery ajax asynchronous

我有一些功能,使用async = false进行Ajax调用。我正在使用以下代码

  $(document).ajaxSend(function (event, request, settings) {
            $("#__smoke_screen").show();
        });
        $(document).ajaxComplete(function (event, request, settings) {
            $("#__smoke_screen").hide();
        });

显示等待屏幕但不适用于同步通话。有什么办法可以显示同步调用的任何等待消息。

PS:我不能async = true。

由于

1 个答案:

答案 0 :(得分:2)

JavaScript是单线程的,这意味着虽然控制线程正在做类似等待的事情(例如,对于Ajax响应),但没有其他任何事情可以发生。这包括重新绘制和更新屏幕。您可以做的最好的事情是在进行Ajax调用之前打开一个对话框,等待对话框显示(通过某种回调事件),然后进行同步Ajax调用。当调用返回时,处理该对话框。但是,在Ajax调用等待期间,屏幕不会重新绘制,也不会响应任何用户交互。同步Ajax调用必须非常快速或完全避免。

如果您的同步Ajax调用需要时间,那么很可能设计中存在错误。

另见以下相关Q& A: