gpt4 book ai didi

javascript - 主干是否对集合中的所有元素或仅添加的元素进行排序

转载 作者:行者123 更新时间:2023-11-29 15:42:28 24 4
gpt4 key购买 nike

在无休止的滚动事件期间,我的 Backbone 应用程序出现速度问题;模型被单独添加到集合中,因此每次都会对集合进行排序。我想知道如何优化它并有 2 个解决方案:

  1. 缓存它们并将它们批量添加到集合中,将 20 种合并为 1
  2. 默默地将模型添加到集合中,并且 debouncing我在每次添加时进行排序的调用(因此最后只调用一次)

所以我想知道 2 是否可行,因为它更容易实现,如果有更好的解决方案我还没有想到。谢谢!

最佳答案

您可以使用 Collection.reset()将多个元素插入到您的集合中,并且只触发一个排序事件。添加的元素被替换,因此现有元素如果存在则需要合并。

您可以使用 debounce 覆盖 add 方法并自己调用 sort,而不是缓存项目。方法。

initialize: function() {
// if you declare the debounce at the Collection.extend(...) level, it will be
// global to all objects (if you have 20 collections they all have to stop calling
// sort before this will fire) so putting it here in initialize is probably wise
this.sort = _.debounce(function(a, b) {
/* do your mojo */
}, 250)
},

add: function(m, opts) {
if( !m instanceof Backbone.Model ) {
m = new Backbone.Model(m);
}
this.models.push(m);
// probably need to check for opts here and honor silent?
this.trigger('add', m);
// for consistency, not sure if this should come before or after the trigger for "add"
this.sort();
}

关于javascript - 主干是否对集合中的所有元素或仅添加的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com