diff options
Diffstat (limited to 'lib/pure/asyncdispatch.nim')
-rw-r--r-- | lib/pure/asyncdispatch.nim | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index de86cd5ef..53c78d929 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -368,12 +368,15 @@ proc all*[A](futs: openarray[Future[A]]): Future[seq[A]] = completedFutures = 0 for i, fut in futs: - fut.callback = proc(f: Future[A]) = - retValues[i] = f.read() - inc(completedFutures) + proc setCallback(i: int) = + fut.callback = proc(f: Future[A]) = + retValues[i] = f.read() + inc(completedFutures) - if completedFutures == len(futs): - retFuture.complete(retValues) + if completedFutures == len(retValues): + retFuture.complete(retValues) + + setCallback(i) return retFuture |