Skip to content

Commit 15aa6bf

Browse files
committed
Merge pull request #60 from ReactKit/multiple-task-handling-with-empty-case
Improve multiple task handling (`Task.all`/`any`/`some`) in case of empty `tasks`-argument
2 parents da6438b + 631ce37 commit 15aa6bf

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

SwiftTask/SwiftTask.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,10 @@ extension Task
690690

691691
public class func all(tasks: [Task]) -> Task<BulkProgress, [Value], Error>
692692
{
693+
guard !tasks.isEmpty else {
694+
return Task<BulkProgress, [Value], Error>(value: [])
695+
}
696+
693697
return Task<BulkProgress, [Value], Error> { machine, progress, fulfill, _reject, configure in
694698

695699
var completedCount = 0
@@ -737,6 +741,8 @@ extension Task
737741

738742
public class func any(tasks: [Task]) -> Task
739743
{
744+
precondition(!tasks.isEmpty, "`Task.any(tasks)` with empty `tasks` should not be called. It will never be fulfilled or rejected.")
745+
740746
return Task<Progress, Value, Error> { machine, progress, fulfill, _reject, configure in
741747

742748
var completedCount = 0
@@ -783,6 +789,10 @@ extension Task
783789
/// This new task will NEVER be internally rejected.
784790
public class func some(tasks: [Task]) -> Task<BulkProgress, [Value], Error>
785791
{
792+
guard !tasks.isEmpty else {
793+
return Task<BulkProgress, [Value], Error>(value: [])
794+
}
795+
786796
return Task<BulkProgress, [Value], Error> { machine, progress, fulfill, _reject, configure in
787797

788798
var completedCount = 0

0 commit comments

Comments
 (0)