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.

39 lines
795 B

  1. //
  2. // Await+Operators.swift
  3. // then
  4. //
  5. // Created by Sacha DSO on 30/05/2018.
  6. // Copyright © 2018 s4cha. All rights reserved.
  7. //
  8. import Foundation
  9. prefix operator ..
  10. public prefix func .. <T>(promise: Promise<T>) throws -> T {
  11. return try await(promise)
  12. }
  13. public prefix func .. <T>(promise: Promise<T>?) throws -> T {
  14. guard let promise = promise else { throw PromiseError.unwrappingFailed }
  15. return try await(promise)
  16. }
  17. prefix operator ..?
  18. public prefix func ..? <T>(promise: Promise<T>) -> T? {
  19. do {
  20. return try await(promise)
  21. } catch {
  22. return nil
  23. }
  24. }
  25. public prefix func ..? <T>(promise: Promise<T>?) -> T? {
  26. guard let promise = promise else { return nil }
  27. do {
  28. return try await(promise)
  29. } catch {
  30. return nil
  31. }
  32. }