Python和Twisted有各种各样的对象代表非阻塞执行,通常称为Futures或Deferreds。它们都倾向于使用隐式回调链接语义。也就是说,如果您有一些deferred
并添加两个回调,例如:
deferred.add_callback(callback1)
deferred.add_callback(callback2)
然后callback1
将获得延迟解析的任何值,但callback2
不会 - 它将获得callback1
返回的任何内容。这可能很难推理,特别是如果将两个回调添加到代码中不同位置的延迟。如果链接必须明确,我更喜欢这样:
new_deferred = deferred.add_callback(callback1)
new_deferred.add_callback(callback2)
这是Javascript承诺的工作方式,我发现它更容易推理。是否有任何异步Python库以这种方式工作?