【发布时间】:2026-02-02 00:15:02
【问题描述】:
我有一个昂贵的函数,createNewWindow()。我想在调用方法时显示进度指示器,然后在函数完成时隐藏该指示器。虽然我尝试过的所有方法,但在方法完成之前我看不到进度指示器,所以我试图异步调用该方法(并且失败)。
我试过这个:
$( "#submit" ).click( function () {
$("#progress").show();
$.Deferred(createNewWindow());
} );
createNewWindow 的最后一行是 $("#progress").show()。没用。在此之前我尝试过:
$( "#submit" ).click( function () {
$("#progress").show();
setTimeout(createNewWindow(), 0);
} );
同样的效果。
这样做的正确方法是什么?
我看到了一些其他 SO 帖子,例如 this,它们描述了使用 setInterval 或 setTimeout,但我无法让它们像我预期的那样工作。
【问题讨论】:
-
以异步方式调用同步函数并不能做到这一点。它仍然会阻止浏览器,你最好的选择是旋转的图像。
标签: javascript jquery asynchronous