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.
29 lines
556 B
29 lines
556 B
//
|
|
// Await.swift
|
|
// then
|
|
//
|
|
// Created by Sacha Durand Saint Omer on 13/03/2017.
|
|
// Copyright © 2017 s4cha. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Dispatch
|
|
|
|
@discardableResult public func await<T>(_ promise: Promise<T>) throws -> T {
|
|
var result: T!
|
|
var error: Error?
|
|
let group = DispatchGroup()
|
|
group.enter()
|
|
promise.then { t in
|
|
result = t
|
|
group.leave()
|
|
}.onError { e in
|
|
error = e
|
|
group.leave()
|
|
}
|
|
group.wait()
|
|
if let e = error {
|
|
throw e
|
|
}
|
|
return result
|
|
}
|