是否有可能停止传播公告传递?
Is it possible to stop propagation of Announcement delivery?
是否有可能以某种方式停止公告传递的传播?
想象一下:
Transcript open.
a := Announcer new.
a when: #event do: [ self logCr: 'first handler' ].
a when: #event do: [ self logCr: 'second handler' ].
a announce: #event.
当 #event
公布后,将发送给所有订阅者。问题是,我希望其中一个事件停止传播,这样第二个事件就不会收到它。类似于在 JavaScript.
中可以停止事件传播的方式
不幸的是它的实现方式 (SubscriptionRegistry>>handlesAnnouncement:
) 它首先收集订阅者然后宣布它。
不,目前在 Pharo 中无法做到这一点。您与 JavaScript 的比较也不太公平,因为 JavaScript 是(有效地)单线程,而 Pharo 不是。当前的公告实施确实在触发它的同一线程中发送公告,因此可能会阻止进一步的发送,但将来实施可能会更改为异步发送公告。那么这道题就会突然变难很多。
是否有可能以某种方式停止公告传递的传播?
想象一下:
Transcript open.
a := Announcer new.
a when: #event do: [ self logCr: 'first handler' ].
a when: #event do: [ self logCr: 'second handler' ].
a announce: #event.
当 #event
公布后,将发送给所有订阅者。问题是,我希望其中一个事件停止传播,这样第二个事件就不会收到它。类似于在 JavaScript.
不幸的是它的实现方式 (SubscriptionRegistry>>handlesAnnouncement:
) 它首先收集订阅者然后宣布它。
不,目前在 Pharo 中无法做到这一点。您与 JavaScript 的比较也不太公平,因为 JavaScript 是(有效地)单线程,而 Pharo 不是。当前的公告实施确实在触发它的同一线程中发送公告,因此可能会阻止进一步的发送,但将来实施可能会更改为异步发送公告。那么这道题就会突然变难很多。