javascript - 在长时间运行的函数中强制使用 jQuery 修改的立即 DOM 更新

标签 javascript jquery long-running-processes

我有一个需要大约 2 秒才能执行的 javascript(复杂的优化算法)。 我想在函数的开头将某些跨度设置为“工作...”。 我观察到 span 在函数结束之前不会改变。

如何强制 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);
}

这会为长时间运行的代码强制一个新的调用堆栈,从而允许在新调用堆栈开始执行之前完成重绘(更改文本)。

关于javascript - 在长时间运行的函数中强制使用 jQuery 修改的立即 DOM 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005096/

相关文章:

javascript - Ajax json 从域中获取数据

javascript - SVG patternTransform scale image 无需平移

javascript - 如何在约束 div 内将溢出的图像居中

jQuery 第 n 项 id/class

android - 在 Android 中处理 "blocking"长时间运行的操作

永远在线的PHP进程

javascript - JS 无法正确显示已加载的页面

javascript - Rails Javascript haml 变量创建

javascript - vuejs MaterializeCSS timepicker 没有获取值

transactions - SAGA代表什么?