我正在填充一个包含大约 500 行的表,这需要浏览器几秒钟来呈现,而它看起来是冻结的。这就是为什么我想显示一条请求用户耐心的消息:
$.ajax({
url: '{{ search_url }}',
success: function (response) {
$('#progress').text('Rendering results, please wait...');
clear_table();
populate_table(response);
}
});
该消息未显示 - 显然浏览器(在 Chrome 23 中测试)缓冲所有 DOM 更改并一次性呈现它们。
作为一种解决方法,我发现当我延迟填充表直到执行返回到事件循环时,实际上会显示消息:
$.ajax({
url: '{{ search_url }}',
success: function (response) {
$('#progress').text('Rendering results, please wait...');
window.setTimeout(function () {
clear_table();
populate_table(response);
}, 0);
}
});
我想知道这种方法是否总是有效,或者这种情况是否有更好的技术。