1

我有一个很大的 JS 计算,我想在页面加载时完成。在一台体面的计算机上,计算大约需要 5-10 秒,这太长了,因为浏览器会在这段时间内冻结。

我可以轻松地将计算分成需要大约 8 毫秒来计算的块。我想通过将每个块附加到画布元素来呈现每个块。尝试使用 requestAnimationFrame 分发这些块是否明智?也许有更好的选择(为什么)?


背景信息: 我使用 html2canvas 将页面呈现为图像,然后使用 Superfast Blur ( http://www.quasimondo.com/BoxBlurForCanvas/FastBlurDemo.html ) 对图像进行模糊处理。这样做的原因是为了复制iOS7的磨砂玻璃效果。有关这方面的更多信息,请参阅http://abduzeedo.com/ios7-frosted-glass-effect-html-5-and-javascript。根据页面的尺寸,这需要相当长的时间。

4

1 回答 1

0

如果您不打算呈现单独的步骤,则应使用setIntervalor setTimeoutrequestAnimationFrame如果您不想制作动画,则没有必要使用 。

调用时的第二个参数setTimeout是调用函数之前经过的时间(以毫秒为单位)。您也可以将其设置为 1 毫秒,但无论如何,调用它所需的最小值约为 4 毫秒。

var timeoutId = 0,
    calc = function() {
        // Your calculations go here

        if(!finished) {
            timeoutId = setTimeout(calc, 4);
        }
}

calc();
于 2013-11-11T13:32:13.007 回答