【发布时间】:2012-09-06 16:09:33
【问题描述】:
我有一个包含 ~1200 个对象的数组,我想将其分配给一个集合,但我总是超时。
我试过这个(我承认不是很优雅):
_.each(mightyArray, function(mightyArrayItem){
BigCollection.create(mightyArrayItem);
});
这可行,但速度太慢了:-(
编辑
也许我走错了路。我正在使用backbone-localstorage.js 而不是某种远程数据库,所以可能是localStorage 本身正在减慢一切?
编辑 2
我认为问题在于localStorage.setItem() 的性能。我现在试试indexedDB :-/
更新/解决方案
在我在 index.html 上添加数据后,由于某种原因它起作用了。可能是范围问题..
<script>
BigCollection.allItems = new BigCollection.AllItems();
BigCollection.allItems.add( BigCollection.allItemsArray ); // Add all the data
</script>
【问题讨论】:
-
BigCollection.add(mightyArray);呢? -
是的。是同步
create()x 1200 导致速度变慢吗?您可能希望先创建集合,然后执行 BATCHsave(),而不是尝试逐个保存每个模型。@nikoshr,为什么不只是BigCollection.reset(arrayHash)? -
@orangewarp 如果集合为空,则等效,但集合可能已经有模型,因此添加以确保安全。
-
明白了。这就说得通了。 :-)
-
@nikoshr 我尝试了
BigCollection.add(mightyArray)变体,但我得到了一个没有模型的集合。
标签: javascript arrays backbone.js local-storage