我有一个javascript,大约需要2秒来执行(复杂的优化算法)。 我想在函数开始时将某个跨度设置为“工作…”。 我观察到这个跨度直到函数结束才改变。
如何强制传播DOM更改?或者我应该以不同的方式一起处理这个问题?
我从按钮上的onclick调用函数。
功能如下:
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); }
这将强制为长时间运行的代码创建一个新的调用堆栈,允许在新的调用堆栈开始执行之前完成重绘(更改文本)。