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