Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制在长时间运行的函数中使用jQuery修改即时DOM更新_Javascript_Jquery_Long Running Processes - Fatal编程技术网

Javascript 强制在长时间运行的函数中使用jQuery修改即时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!'); }

我有一个javascript,执行大约需要2秒钟(复杂的优化算法)。 我想在函数开始时将某个跨度设置为“工作…”。 我观察到跨度直到函数结束时才改变

如何强制DOM更改传播?或者我应该以不同的方式来处理这个问题

我通过单击按钮调用函数

该函数类似于:

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);
}

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

应该可以。你能给我一个不起作用的代码的链接吗?