解决方案 »

  1.   

    本帖最后由 showbo 于 2014-11-12 10:22:05 编辑
      

  2.   


    setTimeout 也就相当于延后放到队列里面 这样做 是否相当于变相的自己切了时间片?
      

  3.   

    我想到了用html5中的worker对象,在后台线程中执行耗时逻辑,就不会影响页面渲染了
      

  4.   

    JS是单线程模型,settimeout也只是给延迟了而已,还是会卡顿页面。
    楼主可以了解下html5中的worker,这个可以让JS多线程。
      

  5.   


    用setTimeout还是可以很大程度上避免界面卡顿的,主体思想是把这个大任务分解成很多个小任务,等小任务做完了,大任务自然也就做完了。但是这种方法也会有其他方面的明显不足。
    还有一种解决方案就是把这种阻塞界面的耗时运算交给服务器做。
      

  6.   


    setTimeout 也就相当于延后放到队列里面 这样做 是否相当于变相的自己切了时间片?差不多这个意思,setTimeout会脱离当前执行环境变为异步回调,不会挂起UI,和多线程语言一样启动了一个另外一个线程执行长时间的任务不会导致ui线程假死#3贴错了代码。。应该是
        var Connect = function () {
            var iMax = 10, jMax = 10, kMax = 1000, i = 1, j = 1, k = 1;
            execFor(iMax, jMax, kMax, i, j, k)
        };贴成for循环的了,和没改一样