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.

42 lines
912 B

  1. //
  2. // Promise+Helpers.swift
  3. // then
  4. //
  5. // Created by Sacha Durand Saint Omer on 20/02/2017.
  6. // Copyright © 2017 s4cha. All rights reserved.
  7. //
  8. import Foundation
  9. public extension Promise {
  10. public class func reject(_ error: Error = PromiseError.default) -> Promise<T> {
  11. return Promise { _, reject in reject(error) }
  12. }
  13. }
  14. public extension Promise {
  15. public class func resolve(_ value: T) -> Promise<T> {
  16. return Promise { resolve, _ in resolve(value) }
  17. }
  18. }
  19. extension Promise where T == Void {
  20. public class func resolve() -> Promise<Void> {
  21. return Promise { resolve, _ in resolve() }
  22. }
  23. }
  24. public extension Promise {
  25. public var value: T? {
  26. return synchronize { state, _ in
  27. return state.value
  28. }
  29. }
  30. public var error: Error? {
  31. return synchronize { state, _ in
  32. return state.error
  33. }
  34. }
  35. }