是否可以停止传播公告传送?

时间:2016-07-22 08:33:40

标签: event-handling smalltalk pharo

是否有可能以某种方式阻止传播公告?

想象:

TEXT

宣布Transcript open. a := Announcer new. a when: #event do: [ self logCr: 'first handler' ]. a when: #event do: [ self logCr: 'second handler' ]. a announce: #event. 后,它将发送给所有订阅者。问题是,我希望其中一个事件停止传播,所以第二个不会收到它。与在JavaScript中停止事件传播的方式类似。

不幸的是,它实现的方式(#event)首先收集订阅者然后宣布它。

1 个答案:

答案 0 :(得分:4)

不,Pharo目前无法实现这一目标。您与JavaScript的比较也不太公平,因为JavaScript(有效地)是单线程的,而Pharo则不是。当前公告的实施确实在触发它的同一线程中发布了公告,因此可以防止进一步的交付,但是将来实施可能会改变以异步地发布公告。那么这个问题会突然变得更加困难。