Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. struct ComposeTransformer<T, R> {
  2. let transformer: (Observable<T>) -> Observable<R>
  3. init(transformer: @escaping (Observable<T>) -> Observable<R>) {
  4. self.transformer = transformer
  5. }
  6. func call(_ observable: Observable<T>) -> Observable<R> {
  7. return transformer(observable)
  8. }
  9. }
  10.  
  11. extension ObservableType {
  12. func compose<T>(_ transformer: ComposeTransformer<E, T>) -> Observable<T> {
  13. return transformer.call(self.asObservable())
  14. }
  15. }
  16.  
  17. // ==================
  18.  
  19. Observable.just([1,2,3,4,5])
  20. .map{ numbers in numbers.reduce(0, +) }
  21. .compose(ComposeTransformer<Int, Int> { observable in
  22. return observable
  23. .subscribeOn(SerialDispatchQueueScheduler(qos: .default))
  24. .observeOn(MainScheduler.instance)
  25. }).subscribe({ (event) in
  26. print(event)
  27. })
  28.  
  29. // ===================
  30.  
  31. let composeTransformer = ComposeTransformer<Int, Int> { observable in
  32. return observable
  33. .subscribeOn(SerialDispatchQueueScheduler(qos: .default))
  34. .observeOn(MainScheduler.instance)
  35. }
  36.  
  37. Observable.just([1,2,3,4,5])
  38. .map{ numbers in numbers.reduce(0, +) }
  39. .compose(composeTransformer)
  40. .subscribe({ (event) in
  41. print(event)
  42. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement