Javascript 强制在长时间运行的函数中使用jQuery修改即时DOM更新
我有一个javascript,执行大约需要2秒钟(复杂的优化算法)。 我想在函数开始时将某个跨度设置为“工作…”。 我观察到跨度直到函数结束时才改变 如何强制DOM更改传播?或者我应该以不同的方式来处理这个问题 我通过单击按钮调用函数 该函数类似于:Javascript 强制在长时间运行的函数中使用jQuery修改即时DOM更新,javascript,jquery,long-running-processes,Javascript,Jquery,Long Running Processes,我有一个javascript,执行大约需要2秒钟(复杂的优化算法)。 我想在函数开始时将某个跨度设置为“工作…”。 我观察到跨度直到函数结束时才改变 如何强制DOM更改传播?或者我应该以不同的方式来处理这个问题 我通过单击按钮调用函数 该函数类似于: function optimize() { $('#status').text('working...'); // calculate for 2 seconds $('#status').text('done!'); }
function optimize() {
$('#status').text('working...');
// calculate for 2 seconds
$('#status').text('done!');
}
尝试在setTimeout调用中包装长时间运行的代码:
function optimize() {
$('#status').text('working...');
window.setTimeout(function() {
// calculate for 2 seconds
$('#status').text('done!');
}, 0);
}
这将强制为长时间运行的代码创建一个新的调用堆栈,允许在新的调用堆栈开始执行之前完成重新绘制(更改文本)。应该可以。你能给我一个不起作用的代码的链接吗?