async all() now immediately completes if arg is empty
This commit is contained in:
parent
5842f7d0d2
commit
f2bded180f
2 changed files with 16 additions and 0 deletions
|
|
@ -246,6 +246,7 @@ proc `or`*[T, Y](fut1: Future[T], fut2: Future[Y]): Future[void] =
|
|||
proc all*[T](futs: varargs[Future[T]]): auto =
|
||||
## Returns a future which will complete once
|
||||
## all futures in ``futs`` complete.
|
||||
## If the argument is empty, the returned future completes immediately.
|
||||
##
|
||||
## If the awaited futures are not ``Future[void]``, the returned future
|
||||
## will hold the values of all awaited futures in a sequence.
|
||||
|
|
@ -270,6 +271,9 @@ proc all*[T](futs: varargs[Future[T]]): auto =
|
|||
if completedFutures == totalFutures:
|
||||
retFuture.complete()
|
||||
|
||||
if totalFutures == 0:
|
||||
retFuture.complete()
|
||||
|
||||
return retFuture
|
||||
|
||||
else:
|
||||
|
|
@ -292,4 +296,7 @@ proc all*[T](futs: varargs[Future[T]]): auto =
|
|||
|
||||
setCallback(i)
|
||||
|
||||
if retValues.len == 0:
|
||||
retFuture.complete(retValues)
|
||||
|
||||
return retFuture
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue