代码之家  ›  专栏  ›  技术社区  ›  Felix

在不使用setTimeout()的情况下等待具有繁重工作负载的函数之前,请等待模态覆盖?

  •  0
  • Felix  · 技术社区  · 16 年前

    我希望,当工作负载繁重的函数工作时,背景是红色的,当它准备就绪时,背景变成黑色。实际情况是,在功能准备就绪后,大多数情况下背景会直接变成黑色。即使你正在等待“完成”的提醒,你也不会看到红色背景。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Test</title>
    <script type='text/javascript'>
    function work()
    {
        var i, a;
        a = [];
        for(i = 0; i < 250000; i++)
        {
            a.push(Math.random());
        }
        a.sort();
        document.getElementsByTagName('body')[0].style.background = '#000000';
        alert('done');
        return true;
    }
    
    window.onload = function() {
        document.getElementsByTagName('body')[0].style.background = '#ff0000';
        //work();
        setTimeout(work, 100);
    
    };
    </script>
    </head>
    <body>
    <h1>Test</h1>
    </body>
    </html>
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   user166390 user166390    16 年前

    同步 编写不会阻塞的代码 !实际上,通过使用thunks/闭包或队列,可以很容易地将大多数计算设置为可恢复和可清除。

    不管怎样。..根据我的经验,在FF3.5(Win)和IE6-8中,1ms的“延迟”足以更新CSS(实际延迟很可能超过1ms)。这迫使事件帖子的“排队”被退回 同步模型内部

    另外,“document.body”:-)

    (我很确定没有“更好”的方法,尽管整个方法闻起来像露天鱼市场。)