我有一个昂贵的函数,createNewWindow()。我想在调用方法时显示进度指示器,然后在函数完成时隐藏该指示器。不过,我尝试过的一切,在方法完成之前我都看不到进度指示器,所以我试图异步调用该方法(并且失败)。
我试过这个:
$( "#submit" ).click( function () {
$("#progress").show();
$.Deferred(createNewWindow());
} );
createNewWindow 的最后一行是 $("#progress").show()。没用。在此之前我尝试过:
$( "#submit" ).click( function () {
$("#progress").show();
setTimeout(createNewWindow(), 0);
} );
一样的效果。
这样做的正确方法是什么?
我看到了一些类似这样的其他 SO 帖子,这些帖子描述了使用 setInterval 或 setTimeout,但我无法让它们像我期望的那样工作。