- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试链接延迟:
def getDeferred1():
d1 = defer.Deferred()
d1.addCallback(printx)
return d1
def getDeferred2():
d2 = defer.Deferred()
d2.addCallback(printy)
return d2
def printx(x):
print 'printx', x
return x
def printy(y):
print 'printy', y
return y
d = getDeferred1()
d2 = getDeferred2()
# d.chainDeferred(d2) #1
# d.addCallback(printy) #2
d.callback('RESULT')
print 'Result', d.result
当前代码将打印:
printx RESULT
Result RESULT
但是如果我取消注释第 1 行,将 d2
链接到 d
,d.result
将是 None
>:
printx RESULT
printy RESULT
Result None
在链接另一个 deferred 时如何获取 deferred.result
而不是 None
?
最佳答案
通常不需要使用 chainDeferred
明确地。当一个延迟对象从另一个延迟对象的回调中返回时,延迟对象会自动链接在一起。
使用 Deferred.result
基本上总是错误的直接地。获取 Deferred 结果的方法是向 Deferred 添加回调。当Deferred有结果时,回调将被调用。
像示例代码中那样将 Deferred 的创建和回调分开并不符合习惯。 getDeferred1
正在创建此代码最终回调的 Deferred。这将是惯用的 getDeferred1
对最终负责d.callback
打电话。
由于这段代码是抽象的且不惯用的,所以我不太确定您想要完成什么。我能给的唯一建议是你可能不需要chainDeferred
并且您绝对不应该编写访问 Deferred.result
的代码.
关于python - Twisted chainDeferred, deferred.result is None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860531/
我在弄清楚有点简单的扭曲 python 代码时遇到问题。根据我在文档中的红色内容,代码 here应该可以正常工作,没有未处理的错误。 我明白了: HELLO! HANDLED! HANDLED 2!
我正在尝试链接延迟: def getDeferred1(): d1 = defer.Deferred() d1.addCallback(printx) return d1 de
我是一名优秀的程序员,十分优秀!