Javascript 设置超时不触发

Javascript 设置超时不触发,javascript,Javascript,我正在尝试一种新的性能增强技术。 我正在尝试批量更新Backbone.collection。 我将使用setTimeout递归调用循环函数。 有人知道为什么设置超时不起作用吗? 请让我知道 var length = this.collection.length - 1; var self = this; loop(); function loop(l){ console.log('Getting into loop func'); var start = +new Date(

我正在尝试一种新的性能增强技术。 我正在尝试批量更新Backbone.collection。 我将使用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);
}
}
var length=this.collection.length-1;
var self=这个;
loop();
函数循环(l){
log('get into-loop func');
var start=+新日期();
var len=l | |长度;
做{
console.log('Processing',len);
过程(len)
}而(-len>=0&&+new Date()-start<50);
log('--get to if--');
如果(len>=0){
console.log('----------',len);
setTimeout(函数(){loop(len)},25);
}
功能过程(一){
console.log('process',i);
self.collection.at(i).set('descStat',descStatus);
}
}

您不应该访问setTimeout调用,因为while循环在
len>=0
为false之前不会终止。

您的控制台是否显示任何内容?并且您的函数进程位于函数循环内,这是有意的吗?是的,我的代码中的所有console.log都有效,但不在setTimeout内。是的,所以理想情况下,在我的SetTimeout中,我将递归调用loop()函数。我不喜欢这样的问题:“X不工作”
setTimeout
是JavaScript中的标准函数。怎么。。。不行!我会将这个问题和其他问题重新表述为“我正在尝试实现X,但到目前为止还没有达到setTimeout,我做错了什么?”……那不是真的,有两个条件,len和milleseconds--len>=0&&+new Date()-start<50如果你说的是真的,那么我永远不会看到console.log('--------------,len);我确实看到了。