2

我想创建一个延迟如下:

f1(x1)并且f2(x2)并行执行(可以这么说),完成后,我运行f3() 如果我有相同的参数,我会运行:

d = Deferred()
d.addCallbacks(f1)
d.addCallbacks(f2)
d.addCallback(lambda x: f3())
d.callback(x1)

这样我就可以同时传递x1f1f2。但我需要f1得到x1等等。

我怎样才能做到这一点?

谢谢。

4

1 回答 1

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())

这样,f3 只有在 d1 和 d2 都完成后才会执行。

于 2011-02-26T15:33:45.893 回答