
On Thu, Jul 31, 2003 at 02:20:24PM -0600, Justin Johnson wrote:
for item in list: d.addCallbacks(onSuccess, log.err, callbackArgs=(item,)) deferreds.append(d)
and then defining onSuccess like...
def onSuccess(results, args): item = args[0] d = item.doSomethingElseThatReturnsDeferred() return d
Is this an acceptable way to accomplish this? It is working in my code but I'd like to do things the right way.
Yes. I'd make that prettier with def onSuccess(results, item): d = item.doSomethingElseThatReturnsDeferred() return d ... for item in list: d.addCallback(onSuccess, item) d.addErrback(log.err) deferreds.append(d)
Besides, you are adding the outer d to deferreds once per iteration. That's broken. I'm not sure what you mean here. I was adding my deferred to a list and it seemed to be doing what I wanted (at least I think it was).
Your original code had
d = doSomethingThatReturnsDeferred()
for item in list: d.addCallbacks(onSuccess, log.err) deferreds.append(d)
Which ends up adding the _same_ d len(list) times to deferreds. -- :(){ :|:&};: