You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
680 B
26 lines
680 B
//
|
|
// Promise+Race.swift
|
|
// then
|
|
//
|
|
// Created by Sacha Durand Saint Omer on 22/02/2017.
|
|
// Copyright © 2017 s4cha. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension Promises {
|
|
|
|
/// `Promise.race(p1, p2, p3, p4...)`Takes the state of the fastest returning promise.
|
|
/// If the first fails, it fails. If the first resolves, it resolves.
|
|
public static func race<T>(_ promises: Promise<T>...) -> Promise<T> {
|
|
return Promise { resolve, reject in
|
|
for p in promises {
|
|
p.then { t in
|
|
resolve(t)
|
|
}.onError { e in
|
|
reject(e)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|