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》

  • 相关阅读:
    安全预警-防范新型勒索软件“BlackRouter”
    线程入门
    线程状态
    支付开发总结
    springboot处理date参数
    函数接口
    Excel通用类工具(一)
    Excel通用类工具(二)
    spring bean生命周期
    springboot整合netty(二)
  • 原文地址:https://www.cnblogs.com/charling/p/3390658.html
Copyright © 2011-2022 走看看