我使用扭曲的API有以下python代码。
def function(self,filename):
def results(result):
//do something
for i in range(int(numbers)) :
name = something that has to do with the value of i
df = function_which_returns_a defer(name)
df.addCallback(results)
它使用Twisted API。我想要实现的是将回调函数(结果)传递给每次迭代中构造的名称的值,而不改变functions_which_returns_a defer()函数的内容以及延迟对象。在functions_which_returns_a deffer的每个结果中,应该将名称的值传递给results()以对此做一些事情。即:在执行到达结果函数的第一次迭代时,我需要函数在i = 0时保持deffered对象的结果和name的值,然后当i = 1时,deferred对象将以值传递名称等等。所以我每次都需要使用名称变量alond和name变量调用defer对象的结果。当我尝试直接使用nameinside results()的值时,它始终保持最后一次迭代的值,这是理由,因为function_which_returns_a defer(name)没有返回。
答案 0 :(得分:18)
您可以通过将这些参数传递给Deferred
来将额外参数传递到Deferred.addCallback
呼叫网站上的Deferred.addCallback
回调:
def function(self,filename):
def results(result, name):
# do something
for i in range(int(numbers)) :
name = something that has to do with the value of i
df = function_which_returns_a defer(name)
df.addCallback(results, name)
您还可以按关键字传递参数:
df.addCallback(results, name=name)
这样传递给addCallback
(或addErrback
)的所有参数都会传递给回调函数。