SetTimeout没有开火

时间:2015-01-08 18:21:55

标签: javascript

我尝试了一种新的性能增强技术。 我试图批量更新Backbone.collection。 我将使用setTimeout递归调用循环函数。 有谁知道为什么这个SetTimeout无法正常工作? 请告诉我。

 var length = this.collection.length - 1;
 var self = this;
 loop();
 function loop(l){
   console.log('Getting into loop func');
   var start = +new Date();
   var len = l || length;
  do{
    console.log('Processing', len);
    process(len)
  }while (--len >=0 && +new Date() - start < 50);
 console.log('--Getting to if--'); 
 if (len >= 0) {
   console.log('------------', len);
   setTimeout(function(){loop(len)}, 25); 
 }
function process(i){
  console.log('process', i);
  self.collection.at(i).set('descStat', descStatus);
}
}

1 个答案:

答案 0 :(得分:3)

你不应该进入setTimeout调用,因为你的while循环在len >= 0为假之前不会终止。