首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GWT中创建子/模块特定的事件总线?

如何在GWT中创建子/模块特定的事件总线?
EN

Stack Overflow用户
提问于 2016-05-24 12:56:09
回答 2查看 188关注 0票数 2

我正在处理一个GWT项目,有一种情况是,我想为具有相同项目的不同模块创建单独的事件总线。GWT为整个项目提供了单个事件总线,我们可以使用它来连接模块。现在,我不想使用相同的事件总线,而是想要一个模块特定的事件总线,它只能处理与该模块相关的事件。有没有实现这种情况的机制?GWT允许我们在同一项目中创建多个事件总线吗?如果是,那么如何实现和使用。

EN

回答 2

Stack Overflow用户

发布于 2016-05-24 15:05:19

虽然这看起来是个好主意,但是拥有多个EventBus将会给您的项目增加更多的复杂性。您可能已经知道,JavaScript是单线程的,无论您用GWT编写什么java代码,都会被转换为JavaScript。因此,拥有多个EventBus不会带来任何好处。

One Vs N EventBus

如果你有时间,请阅读this。这可能会很有趣。

票数 0
EN

Stack Overflow用户

发布于 2016-05-26 14:35:37

如果配置了gin,您可以通过以下步骤使用gin注入来实现这一点

1.创建事件总线为:

代码语言:javascript
复制
public interface EventBusOne extends EventBusWithLookup {}

public interface EventBusTwo extends EventBusWithLookup {}

2.在为gwt应用程序创建的gin模块中绑定两条总线,如下所示:

代码语言:javascript
复制
bind(EventBusWithLookup.class).annotatedWith(Names.named("EventBusOne")).toProvider(EventBusOneProvider.class).in(Singleton.class);
bind(EventBusWithLookup.class).annotatedWith(Names.named("EventBusTwo")).toProvider(EventBusTwoProvider.class).in(Singleton.class);

3.创建自定义提供程序为:

代码语言:javascript
复制
public class EventBusOneProvider implements Provider<EventBusWithLookup> {
    @Override
    public EventBusWithLookup get() {
        return GWT.create(EventBusWithLookup.class);
    }
}

public class EventBusTwoProvider implements Provider<EventBusWithLookup> {
    @Override
    public EventBusWithLookup get() {
        return GWT.create(EventBusWithLookup.class);
    }
}

4.在展示者中或任何需要的地方注入事件总线:

代码语言:javascript
复制
@Inject
public void setEventBus(@Named("EventBusOne") Provider<EventBusWithLookup> eventBus) {
    this.eventBus = eventBus;
}

@Inject
public void setEventBus(@Named("EventBusTwo") Provider<EventBusWithLookup> eventBus) {
    this.eventBus = eventBus;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37404692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档