事件聚合器,命令和请求/响应之间的区别

时间:2013-10-24 09:32:38

标签: events backbone.js marionette

我正在尝试使用Backbone.Marionette,我在github上阅读了关于wreqr的docs。 那么,事件聚合器,命令和请求/响应之间的区别是什么。何时使用一个或另一个?

2 个答案:

答案 0 :(得分:9)

他们基本上都使用消息传递,他们的区别主要是语义:

  • 事件聚合器:发生事件时发送消息。其他地方的代码可能正在侦听该消息,但可能不是
  • 请求/响应:让代码发送请求,它会收到响应(例如发送给我刷新的数据)
  • 命令:代码在一个地方命令代码在其他地方执行操作。通常没有返回值。

答案 1 :(得分:8)

我想补充一下David Sulc的answer

请求/响应与事件聚合器和命令非常不同。它用于代码的一部分从代码的另一部分请求某些内容的情况。始终会有回应。现在让我们看看事件聚合器和命令是如何不同的。

Marionette的Event Aggregator允许您实现发布 - 订阅行为。使用' on'您可以订阅事件并将事件绑定到任何对象的方法。 您无法使用命令实现此绑定行为。 此外,您可以让多个对象侦听任何特定事件。可能还存在没有对象绑定或收听任何事件的情况。

命令专门用于在代码的其他部分执行某些操作。对于特定命令,只能有1个处理程序,与可以有多个侦听器的事件不同。

总而言之,每个用例都是:

1)请求/响应:当您需要代码的其他部分的某些响应时。

2)事件聚合器:当您想要将对象绑定到事件

3)命令:您只需要代码的其他部分来执行任务。