假设我们有一个名为Foo的类,当它准备好时,它会触发“ready”事件。在
from observer import SubjectSet
class Foo:
def __init__(self):
self.events = SubjectSet()
self.events.create('ready')
def do_sth(self):
self.events.fire('ready')
如您所见,dou-sth方法生成Foo类的就绪实例。但子类将希望添加在发出就绪事件之前必须完成的新任务/条件。在
为了解决这个问题,我编写了一组名为TaskPool、Task、ObserverTask的新类。它们被Foo类这样使用:
^{pr2}$现在,它在taskpool触发“success”事件时触发“ready”事件。正如您所期望的,将扩展Foo的类可以定义在触发ready事件之前必须完成的新任务。顺便说一下,几乎所有的任务都是异步的。在
你认为这是解决问题的好办法吗?我一直在寻找更好的解决方案,但我想我不知道正确的搜索短语。在
谢谢。在
我认为你并没有确切地定义你要解决的问题是什么。然而,这个解决方案并没有错。它显然是异步和事件驱动的。但我认为,一般来说,解决方案也应该指向错误情况,即,如果task1或task2由于任何原因而失败,会发生什么情况?它们可能也会被允许发送一个“失败”事件,然后这个事件也应该通过一些逻辑从Foo中传播出去,例如,如果task1失败,task2是否仍会运行到完成,还是会被中止;如果task1成功,task2失败,主对象会报告“success”或“failed”out还是什么?只是需要考虑的事情。在
相关问题 更多 >
编程相关推荐