扭曲:推迟反复发射?

Cla*_*diu 5 python multithreading twisted callback

Deferreds是在Twisted中进行异步处理的好方法.但是,顾名思义,它们用于延迟计算,它只运行和终止一次,触发一次回调.如果我有一个重复的计算,如点击一个按钮怎么办?是否存在任何Deferred类似的对象可以反复触发,在触发时调用附加到它的所有回调?

Cla*_*diu 3

我现在已经设置好了。对于我有限的用例,它可以满足我的需求。

class RepeatedDeferred:
    def __init__(self):
        self.callbacks = []

        self.df = defer.Deferred()

    def addCallback(self, callback):
        self.callbacks.append(callback)

        self.df.addCallback(callback)

    def callback(self, res):
        self.df.callback(res)

        self.df = defer.Deferred()
        for c in self.callbacks:
            self.df.addCallback(c)
Run Code Online (Sandbox Code Playgroud)

有人告诉我这是否可怕。