在我的一个视图中,我将收集一个集合(user_id,日期,帖子数,平均帖子长度),然后对数据执行一些数学计算(例如:汇总总数和平均帖子长度。
要做到这一点,我循环使用下划线每个函数并创建一个附加到表的新视图(元素是tr)。
在循环结束时,我调用jquery排序表插件来对表中的数据进行排序。我遇到的问题是,在调用jQuery排序表之前,很多时候每个循环都没有完成运行。我已经设置好了,因此在调用jquery之前会有一段延迟,但是在这种情况下,100%的时间内更优雅的解决方案是什么。
var size = _.size(userposts);
_.each(userposts, function(post) {
var sum = 0;
var totposts = 0;
j++;
_.each(post, function(times) {
sum += (times.get("posts") * times.get("avgpost"));
totposts += times.get("posts");
});
if(post[0].get("userId")){
var tempuser = new User({id: post[0].get("userId")});
tempuser.fetch({ success: function() {
$("#user-posts").append(new UserPostView({data: {name: tempuser.get("name"), num: totposts, avg: parseInt((sum / totposts))}}).render().el);
}});
}
if (j == size) {
formatTable();
}
});
答案 0 :(得分:0)
所以,也许我错过了你的问题,但要全力以赴,你有:
循环(或循环集合)
需要在循环结束时触发的事件?
计时器是一个大不禁!如果此过程在其他计算机上花费的时间更长还是移动设备?您永远不想依赖计时器来排队依赖于现有数据的函数调用,尤其是在没有备份的情况下。
我有两种方法可以想到这样做
var loopStatus = 0;
for (var i = 0; i < n; i++){
someMethod();
loopStatus++
if (loopStatus = n){
someMethod2();
}
}
或者你可以在循环之外的someMethod2()调用中使用一段时间