gpt4 book ai didi

events - Eventbus 事件顺序

转载 作者:行者123 更新时间:2023-12-04 22:50:13 27 4
gpt4 key购买 nike

早晨,

我正在使用 SimpleEvent总线将数据从我的集中式数据恢复器发送到小部件。这真的很好用,我从服务器获得一组新数据,RPC 调用的成功方法将它放在 Eventbus 上,每个小部件查看数据是否适合它,如果是,则“显示”它,如果不是,它什么都不做。每个请求只有一个数据集,并且小部件不依赖于已经发送的其他数据。

现在我有一个 Tree 小部件。 Tree 的子节点也被创建抛出这个数据集,并且这个子节点将自己注册到 Eventbus 以恢复其子节点的数据。数据应立即接收(出于性能原因obv),因此我将获得多个数据集,这些数据集在“同一时间”(在 for 循环中)放在 Eventbus 上。我只控制它们放在那里的顺序(首先是根,然后是第一个 child 的数据......)。 Eventbus 现在如何处理事件?

  • 他是否等到第一个事件完成,所以第一个 child
    树已经完成创建并将自己注册到
    Eventbus,恢复数据以创建它的 child 的。
  • 他是否同时处理它们,所以小部件甚至没有注册到 Eventbus。
  • 他混淆了顺序?!?!

  • 目前的解决方法:
  • 我能想到的最佳解决方案是只将新事件放在
    前一个完成时的事件总线。不过我找到了一个方法
    这样做,或者它是否是 Eventbus 的标准行为。
  • 当小部件处理事件时触发请求处理完成事件。哎呀...这会导致很多额外的代码并导致大问题,当数据放在不属于任何小部件的事件总线上时....
  • 注册一个静态变量,当请求得到处理并且 Eventbus 等待这么长时间,直到他将下一个请求放在 Eventbus 上(安静类似于两个,但更糟糕的编码风格和相同的问题)
  • 所有事件都由根树元素处理,它将它们向上发送到相应的子元素。

  • 您更喜欢哪种解决方案,为什么?

    问候,
    斯特凡

    PS:我最喜欢的答案是 1. 是 Eventbus 的标准行为^^
    PPS:在引入 Webworkers 时也应该考虑解决方案。

    最佳答案

    EventBus#fireEvent是同步的。这是设计使然。您可以将事件传递给总线,让处理程序对其进行修改,当执行返回到您的方法时,您可以检查该事件;这用于 PlaceChangeRequestEvent和它的 setMessage例如。

    仅供引用,如果处理程序抛出异常,它不会阻止其他处理程序被执行。 fireEvent然后将异常(复数;多个处理程序可以抛出)包装在 UmbrellaException 中。 .

    关于events - Eventbus 事件顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092026/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com