【发布时间】:2016-10-27 09:43:40
【问题描述】:
我对这个同步 jquery ajax 请求感到困惑。 ajax 加载程序直到 ajax 调用完成后才会显示。我很清楚同步请求会阻塞 UI,但是为什么它在该行代码被命中之前就开始阻塞呢?我一定是误解了执行顺序的基本原理。
$("#ajax-loader").show(1, function(){
$.ajax({
url: xxx,
type: "POST",
async: false,
success: function (data) {
hideAjaxLoader();
}
});
});
【问题讨论】:
-
如果你不想阻塞 UI,它应该是异步的。只需删除
async: false即可。 -
因为它是同步的?!通常你不应该使用
async:false -
您只需要注意,在执行所有当前同步代码之后,DOM 将被渲染(将显示您的加载器)。这就是为什么在请求之前没有显示加载器的原因。
-
@Liam:看到这个问题——OP 清楚地意识到了这一点。问题是为什么它会阻止加载器在理论上被称为在加载器显示时显示。
标签: javascript jquery