我尝试了一种新的性能增强技术。 我试图批量更新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);
}
}
答案 0 :(得分:3)
你不应该进入setTimeout调用,因为你的while循环在len >= 0
为假之前不会终止。