我有一些功能,使用async = false进行Ajax调用。我正在使用以下代码
$(document).ajaxSend(function (event, request, settings) {
$("#__smoke_screen").show();
});
$(document).ajaxComplete(function (event, request, settings) {
$("#__smoke_screen").hide();
});
显示等待屏幕但不适用于同步通话。有什么办法可以显示同步调用的任何等待消息。
PS:我不能async = true。
由于
答案 0 :(得分:2)
JavaScript是单线程的,这意味着虽然控制线程正在做类似等待的事情(例如,对于Ajax响应),但没有其他任何事情可以发生。这包括重新绘制和更新屏幕。您可以做的最好的事情是在进行Ajax调用之前打开一个对话框,等待对话框显示(通过某种回调事件),然后进行同步Ajax调用。当调用返回时,处理该对话框。但是,在Ajax调用等待期间,屏幕不会重新绘制,也不会响应任何用户交互。同步Ajax调用必须非常快速或完全避免。
如果您的同步Ajax调用需要时间,那么很可能设计中存在错误。
另见以下相关Q& A: