zoukankan      html  css  js  c++  java
  • 异步化数组处理的方法

    当需要对数组中的每一项进行操作,但数组的length很长,或者对每一项进行操作的过程特别复杂时,就会导致页面长时间等待js执行完成。

    如果该处理过程满足两个条件:

    1、不是必须同步处理。

    2、不是必须按顺序处理。

    示例:

    同步的处理方法

    for(var i=0,len=items.length;i<len;i++){

      process(items[i]);

    }

    异步的处理方法

    function processArray(items, process, callback){

      var arrCopy = items.concat();

      setTimeout(function(){

        process(arrCopy.shift());

        if(arrCopy.length>0){

          setTimeout(arguments.callee,25);

        }else{

          callback(items);

        }

      },25);

    }

    该方法的缺点:

      每处理一个项都要间隔25ms。

    解决办法:

    var start = +new Date();
    do {
      process(todo.shift());
    } while (todo.length > 0 && (+new Date() - start < 50));

    设置一个时间标记,50毫秒之内连续执行process

    来自《高性能javascript》

  • 相关阅读:
    CSS简要内容
    HTML简要内容
    java中的多线程
    java中的IO流
    hash
    java中的集合
    java中的数组
    java中的异常机制(编译时异常)
    静态变量和静态方法的访问权限
    成员变量和成员方法的访问权限
  • 原文地址:https://www.cnblogs.com/charling/p/3390658.html
Copyright © 2011-2022 走看看