假设我有一个名为集合的集合集合。现在,让我们考虑一下这段代码。
_.each(collections, function(collection){
_.each(collection, function(item){
console.log(item);
}
});
多次打印未定义的值。它似乎在从上一个循环实际设置之前打印项目值。为什么不保留执行顺序?
提前致谢。
答案 0 :(得分:1)
是collections
和collection
普通数组吗?或者他们是Backbone.Collection
?
您描述的行为不是下划线中的错误。它应该按照您的预期维护执行顺序。这可能是集合中数据的问题。
如果要在运行.each
之前从集合中删除所有未定义的值,可以使用_.compact(array)
(假设它们是普通的javascript数组)
_.each(_.compact(collections), function(collection){
_.each(_.compact(collection), function(item){
console.log(item);
}
});
答案 1 :(得分:0)
我想这只是因为内部循环也异步运行它的回调。因此,父循环不会等待它完成,它会在下一次迭代中直接运行。