【问题标题】:Twisted - pass result to mutiple callbacksTwisted - 将结果传递给多个回调
【发布时间】:2020-02-08 14:07:49
【问题描述】:

我有两个回调函数 B、C,我希望它们处理函数 A 返回 Deferred (A->B->C) 的结果。通常情况下,我会将他们合二为一,但出于某种原因,我不能这样做。

据我所知,扭曲的回调管道处理先前回调的返回。 解决方案显然是将B,C作为回调添加到A,并将A的原始返回传递给B并通过返回到C。有没有更好的方法来做到这一点,比如reverse DeferredList

【问题讨论】:

  • A().addCallback(B).addCallback(c) 有什么问题?
  • 这不是问题,只是不舒服:C 被设计为与 B 具有相同的结果,并且这些函数在整个系统中使用。没关系,我已经重写了这些论点。

标签: python callback twisted deferred


【解决方案1】:

或者你可以使用inlineCallbacks

`
from twisted.internet.defer import inlineCallbacks

@inlineCallbacks
def doThing():
     result = yield A()
     B(result)
     C(result)

     # or if it is a function returning a deferred
     yield B(result)
     yield C(result)
`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多