Javascript 批处理Backbone.js事件?

Javascript 批处理Backbone.js事件?,javascript,synchronization,backbone.js,Javascript,Synchronization,Backbone.js,我的应用程序框架是围绕崩溃的主干模型构建的,通过WebSocket发送数据,并使用数据更新其他客户端上的模型。我的问题是,当一个操作触发一行中的5个更改时,我应该如何批处理这些更新 同步方法设置为在任何更改时更新,但如果我同时设置了5项,我不希望它连续触发5次 我在想,如果有其他东西试图在一秒钟内同步,我可以在任何被清除的同步上设置超时。这似乎是最好的路线,还是有更好的方法 谢谢 我没有专门用主干网来做这件事,但我以前在其他分布式(客户机/服务器)应用程序中做过这种命令批处理 其要点是,如果您认

我的应用程序框架是围绕崩溃的主干模型构建的,通过WebSocket发送数据,并使用数据更新其他客户端上的模型。我的问题是,当一个操作触发一行中的5个更改时,我应该如何批处理这些更新

同步方法设置为在任何更改时更新,但如果我同时设置了5项,我不希望它连续触发5次

我在想,如果有其他东西试图在一秒钟内同步,我可以在任何被清除的同步上设置超时。这似乎是最好的路线,还是有更好的方法


谢谢

我没有专门用主干网来做这件事,但我以前在其他分布式(客户机/服务器)应用程序中做过这种命令批处理

其要点是,如果您认为需要,您应该从超时开始,并添加批量大小以进行进一步优化

假设您的批量大小为10。当你把9个项目塞进这个批次,然后用户就坐在那里不做任何其他事情时会发生什么?服务器永远不会收到用户想要做的事情的通知

超时通常可以很好地获得小批量。但是,如果您有一个生成大量相关命令的操作,您可能希望对所有命令进行批处理,并在它们准备好后立即发送它们,而不是等待计时器。时间可能会在创建命令和将问题分开的方式中引起问题等等。


希望这会有所帮助。

Backbone.js使用的实用程序库underline.js具有:

  • 生成最多每X毫秒执行一次的函数版本
  • 生成一个函数的版本,该函数自上次调用以来仅在经过X毫秒后才会执行
  • 生成仅在调用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));

好问题,我正在做同样的事情,5次或30秒的要求是什么?如何使
之后
去盎司
一起工作?两者并行使用。:)