批处理Backbone.js事件
Batch Backbone.js events?
我的应用程序的框架是围绕通过websockets发送数据并使用数据更新其他客户端的骨干模型构建的。我的问题是,当一个动作连续触发5个更改时,我应该如何批量更新这些更新。
同步方法设置为在任何更改时更新,但如果我同时设置5项,我不希望它连续触发5次。
我想我可以在任何同步上做一个setTimeout,如果其他东西试图在一秒钟内同步,它就会被清除。这看起来是最好的路线还是有更好的方法?
谢谢!
我还没有对backbone做过这样的处理,但我过去在其他分布式(客户端/服务器)应用程序中做过这种命令的批处理。
它的要点是,如果您认为需要的话,您应该从超时开始并添加批大小以进一步优化。
假设批量大小为10。当你把9件物品塞进批处理中然后用户只是坐在那里什么都不做时会发生什么?服务器永远不会收到用户想要做的事情的通知。
timeout通常适用于获得小批量。但是,如果您有一个生成大量相关命令的操作,您可能希望批量处理所有命令,并在它们准备好后立即发送它们,而不是等待计时器。时间可能会在创建命令的过程中被触发,并以一种导致问题的方式将事情分开,等等。
Underscore.js是Backbone.js使用的实用程序库,它有几个函数用于限制回调:
- throttle使一个函数的版本最多每X毫秒执行一次。
- debounce生成一个函数的版本,该版本仅在自上次调用它以来X毫秒后才执行
- after创建一个函数的版本,该版本只会在调用X次后执行。
所以如果你知道有5个项目将被改变,你可以注册一个这样的回调:
// only call callback after 5 change events
collection.on("change", _.after(5, callback));
但更有可能的是你没有,你会想要使用超时方法:
// only call callback 30 milliseconds after the last change event
collection.on("change", _.debounce(30, callback));
相关文章:
- 为什么js事件消失了
- 为什么我的点击事件没有使用 react js 触发
- node.js请求数据事件未在CORS ajax调用中触发
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 使用onkeyup JS事件检查输入的值是否唯一
- dropdown.js中的复杂事件处理
- 使用Bacon.js发出事件
- 针对重复发生的事件,使用moment.js防止DST偏移
- d3 中是否有点击和双击事件.js力定向图
- gulpfile 引发错误事件.js:154
- Chrome 扩展程序在后台注册事件.js
- Google Analytics(分析)在淘汰赛中推送跟踪事件.js数据绑定
- 如何在木偶中使用模型事件.js
- 节点.js - 事件.js:154 抛出错误写入 EPIPE;程序崩溃
- 侦听单击事件 JS
- 使客户端在选项卡关闭节点上发送断开连接事件.js
- 如何在onkepress事件+ JS上计算sub_total和total_price输入
- 不能在onclick事件(JS)上向元素插入函数
- 附加一个错误事件js/jquery
- 捕获鼠标拖动事件JS时会发生奇怪的事情