我的方法如下:
@defer.inlineCallbacks
def myAsyncMethod():
if someCondition:
yield anotherAsyncMethod()
问题是,如果someCondition
不是True
,那么就没有屈服,这本质上变成了一个同步函数。装饰器会导致这是一个错误。在
现在,我正在做yield 1
的结尾。在这里这样做对吗?
我当然可以:
但我看不出有什么不同
编辑:我这里的意思是,如果我尝试做yield myAsyncMethod()
,那么它将生成一个异常。我不想处理这个异常。避免这种情况的一种方法是在myAsyncMethod()的末尾生成一些内容,但是有没有另一种简单的方法可以做到这一点呢。这里的常见做法是什么?在
前提是不正确的。考虑:
在这里,不计算收益率声明。不过,这并不能阻止
foo
返回生成器。在这意味着您可以用
^{pr2}$inlineCallbacks
来修饰这样一个函数。在由于生成器没有元素,因此返回的是一个},如您在这里看到的。在
Deferred
,结果是已经有了{此外,这意味着您可以调用这样一个函数,并从另一个
^{3}$inlineCallbacks
-修饰函数生成它,而不会出现问题:在这里您可以看到
bar
被执行,产生了调用foo
的结果,输出了Deferred
的结果,然后完成了它自己的Deferred
(它也有一个None
结果)。在相关问题 更多 >
编程相关推荐