早晨,
我正在使用SimpleEvent
总线将数据从我的集中式数据恢复器发送到小部件。这真的很好,我从服务器获得一组新数据,RPC调用的成功方法将它放在Eventbus上,每个小部件都会查看数据是否适合它,如果是,它会“显示”它,如果不是,它什么都不做。每个请求只有一个数据集,小部件不依赖于已经发送的其他数据。
现在我有一个 Tree 小部件。树的子节点也被创建并抛出此数据集,并且此子节点将自身注册到 Eventbus 以恢复其子节点的数据。数据应在匆忙中接收(出于性能原因obv),因此我将获得多个数据集,这些数据集“同时”(在for循环中)放在Eventbus上。我只控制它们放在那里的顺序(首先是根,然后是第一个孩子的数据......)。Eventbus 现在如何进行活动?
- 他是否等到第一个事件完成,所以树的第一个孩子已经完成创建并将自己注册到 Eventbus,以恢复数据以创建它的孩子。
- 他是否同时处理它们,所以小部件甚至没有注册到 Eventbus。
- 他把顺序弄乱了吗?!?!
目前的解决方法:
- 我能想到的最佳解决方案是仅在前一个事件完成后才将新事件放在 Eventbus 上。但是我找到了一种方法,或者它是 Eventbus 的标准行为。
- 当小部件处理事件时,触发请求处理完成事件。哎呀......当数据放在不属于任何小部件的事件总线上时,这会导致大量额外代码并导致大问题......
- 注册一个静态变量,当请求得到处理时设置为 true,Eventbus 等待这么长时间,直到他将下一个请求放在 Eventbus 上(安静类似于两个,但更糟糕的编码风格和同样的问题)
- 所有事件都由根树元素处理,根树元素将它们向上发送到相应的子元素。
您更喜欢哪种解决方案,为什么?
问候,斯特凡
PS:我最喜欢的答案是 1. 是 Eventbus 的标准行为^^ PPS:解决方案也应该在引入 Webworkers 时起作用。