我想按如下方式创建延迟:
f1(x1)
和f2(x2)
并行执行(可以这么说)
完成后,我运行f3()
如果我有相同的参数,我会运行:
d = Deferred()
d.addCallbacks(f1)
d.addCallbacks(f2)
d.addCallback(lambda x: f3())
d.callback(x1)
因此我将x1
传递给f1
和f2
。但我需要f1
才能获得x1
等等。
我该怎么做?
感谢。
答案 0 :(得分:3)
我不确定,如果我理解你的用例是正确的,但这似乎是某种情况,DeferredList特别适用。
d1 = function_that_returns_a_deferred_1(x1)
d2 = function_that_returns_a_deferred_2(x2)
d = DeferredList([d1, d2])
d.addCallback(lambda ign: f3())
这样,只有在d1和d2都完成后才会执行f3。