โœจ
Combine ๐Ÿค RxSwift ๐Ÿค ReactiveSwift
  • Combine ๐Ÿค RxSwift ๐Ÿค ReactiveSwift
  • Publisher
    • Publishers.Merge
    • Publishers.Zip3
    • Publishers.TryScan
    • Publishers.MergeMany
    • Publishers.Breakpoint
    • AnyPublisher
    • Publishers.Concatenate
    • Publishers.Drop
    • Publishers.Decode
    • Publishers.TryCompactMap
    • Publishers.CombineLatest4
    • Optional.Publisher
    • Publishers.CollectByCount
    • Publishers.TryFilter
    • Publishers.CombineLatest3
    • Publishers.TryContainsWhere
    • Just
    • Publishers.TryFirstWhere
    • Publishers.MapError
    • Publishers.RemoveDuplicates
    • Result.Publisher
    • Publishers.LastWhere
    • Publishers.First
    • Publishers.Throttle
    • Publishers.DropUntilOutput
    • Publishers.Count
    • Publishers.Comparison
    • Publishers.Debounce
    • Publishers.MapKeyPath
    • Publishers.CollectByTime
    • Publishers.TryDropWhile
    • Empty
    • Publishers.PrefixUntilOutput
    • Publishers.Print
    • URLSession.DataTaskPublisher
    • Publishers.Reduce
    • Publishers.MapKeyPath3
    • Publishers.Collect
    • Publishers.TryPrefixWhile
    • Publishers.MapKeyPath2
    • Future
    • Publishers.SubscribeOn
    • Publishers.AllSatisfy
    • Publishers.Retry
    • Publishers.ContainsWhere
    • Publishers.SetFailureType
    • Publishers.TryMap
    • Publishers.Output
    • Publishers.TryRemoveDuplicates
    • Publishers.HandleEvents
    • Publishers.Sequence
    • Publishers.TryCatch
    • Publishers.Merge8
    • Publishers.CombineLatest
    • Deferred
    • Publishers.Merge7
    • Publishers.Contains
    • Fail
    • Publishers.Merge6
    • Publishers.TryComparison
    • Publishers.Delay
    • Publishers.Scan
    • Publishers.Merge5
    • Publishers.MeasureInterval
    • Publishers.AssertNoFailure
    • Publishers.ReceiveOn
    • Publishers.Merge4
    • Publishers.DropWhile
    • Publishers.Merge3
    • Publishers.TryReduce
    • Publishers.Zip
    • Publishers.Timeout
    • Publishers.CompactMap
    • Publishers.ReplaceEmpty
    • Publishers.PrefixWhile
    • Publishers.Filter
    • Publishers.TryAllSatisfy
    • Publishers.FirstWhere
    • Publishers.Last
    • Publishers.Map
    • Publishers.SwitchToLatest
    • Publishers.TryLastWhere
    • Publishers.Encode
    • Publishers.Catch
    • Publishers.ReplaceError
    • Pulishers.IgnoreOutput
    • Publishers.Zip4
  • Subject
    • PassthroughSubject
    • CurrentValueSubject
  • Subscriber
Powered by GitBook
On this page
  • RxSwift
  • ReactiveSwift
  • ์ฐธ๊ณ 

Was this helpful?

  1. Publisher

Publishers.HandleEvents

์ œ๋„ค๋ฆญ ๊ตฌ์กฐ์ฒด | Publisher์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํŠน์ • ํด๋กœ์ €๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” Publisher

์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ์—ฌ์„ฏ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค.

  • upstream : ์ƒ์œ„์— ํ๋ฅด๋Š” Publisher

  • receiveSubscription : Publisher๊ฐ€ ์ƒ์œ„ Publisher๋กœ๋ถ€ํ„ฐ ๊ตฌ๋…์„ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ํด๋กœ์ €. ๊ธฐ๋ณธ๊ฐ’์€ nil

  • receiveOutput : Publisher๊ฐ€ ์ƒ์œ„ Publisher๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ํด๋กœ์ €. ๊ธฐ๋ณธ๊ฐ’์€ nil

  • receiveCompletion : Publisher๊ฐ€ ์ƒ์œ„ Publisher๋กœ๋ถ€ํ„ฐ ์™„๋ฃŒ๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ํด๋กœ์ €. ๊ธฐ๋ณธ๊ฐ’์€ nil

  • receiveCancel : ํ•˜์œ„ ๋ฆฌ์‹œ๋ฒ„๊ฐ€ ๋ฐœํ–‰์„ ์ทจ์†Œํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ํด๋กœ์ €. ๊ธฐ๋ณธ๊ฐ’์€ nil

  • receiveRequest : Publisher๊ฐ€ ๋” ๋งŽ์€ ์š”์†Œ๋ฅผ ์œ„ํ•ด ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ํด๋กœ์ €. ๊ธฐ๋ณธ๊ฐ’์€ nil

์ŠคํŠธ๋ฆผ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ์—์„œ ์‹คํ–‰ํ•  ์•ก์…˜์„ ๋“ฑ๋กํ•œ๋‹ค.

ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Publisher์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

sink๋Š” Subscriber์— ๋Œ€ํ•œ ์˜คํผ๋ ˆ์ดํ„ฐ๊ณ , handleEvents๋Š” Publisher์— ๋Œ€ํ•œ ์˜คํผ๋ ˆ์ดํ„ฐ๋‹ค.

  • sink๋Š” Subscriber์˜ ๊ตฌ๋…์— ์˜ํ•ด ์ตœ์ข…์ ์œผ๋กœ ๋ฐœํ–‰๋œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ๋™์ž‘ํ•œ๋‹ค.

  • handleEvents๋Š” ๊ตฌ๋…์— ์˜ํ•ด ์ƒ์œ„ Publisher๊ฐ€ ๋ฐœํ–‰ํ•˜๋Š” ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ๋™์ž‘ํ•œ๋‹ค.

handleEvents ์˜คํผ๋ ˆ์ดํ„ฐ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

// Publishers.HandleEvents Publisher
Publishers
  .HandleEvents(upstream: Just(Void()),
                receiveSubscription: { _ in print("Combine HandleEvents ReceiveSubscription") },
                receiveOutput: { print("Combine HandleEvents ReceiveOutput") },
                receiveCompletion: { _ in print("Combine HandleEvents ReceiveCompletion") },
                receiveCancel: { print("Combine HandleEvents ReceiveCancel") },
                receiveRequest: { _ in print("Combine HandleEvents ReceiveRequest") })
  .sink(receiveCompletion: { completion in
    switch completion {
    case .failure:
      print("Combine HandleEvents Error")
    case .finished:
      print("Combine HandleEvents Finish")
    }
  }, receiveValue: {
    print("Combine HandleEvents")
  })
  .store(in: &cancellables)

// handleEvents Operator
Just(Void())
  .handleEvents(receiveSubscription: { _ in print("Combine HandleEvents ReceiveSubscription") },
                receiveOutput: { print("Combine HandleEvents ReceiveOutput") },
                receiveCompletion: { _ in print("Combine HandleEvents ReceiveCompletion") },
                receiveCancel: { print("Combine HandleEvents ReceiveCancel") },
                receiveRequest: { _ in print("Combine HandleEvents ReceiveRequest") })
  .sink(receiveCompletion: { completion in
    switch completion {
    case .failure:
      print("Combine HandleEvents Error")
    case .finished:
      print("Combine HandleEvents Finish")
    }
  }, receiveValue: {
    print("Combine HandleEvents")
  })
  .store(in: &cancellables)

// Combine HandleEvents Receive Request
// Combine HandleEvents Receive Subscription
// Combine HandleEvents Receive Output
// Combine HandleEvents
// Combine HandleEvents Receive Completion
// Combine HandleEvents Finish

๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด Publisher๋Š” ์—๋Ÿฌ๋ฅผ ๋‚ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  1. Publisher : Receive Request

  2. Publisher : Receive Subscription

  3. Publisher : Receive Output

  4. Subscriber : Receive Value

  5. Publisher : Receive Completion

  6. Subscriber : Receive Finished

RxSwift

do ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Observable.just(Void())
  .do(onNext: { print("RxSwift HandleEvents OnNext") },
      afterNext: { print("RxSwift HandleEvents AfterNext") },
      onError: { _ in print("RxSwift HandleEvents OnError") },
      afterError: { _ in print("RxSwift HandleEvents AfterError") },
      onCompleted: { print("RxSwift HandleEvents OnCompleted") },
      afterCompleted: { print("RxSwift HandleEvents AfterCompleted") },
      onSubscribe: { print("RxSwift HandleEvents OnSubscribe") },
      onSubscribed: { print("RxSwift HandleEvents OnSubscribed") },
      onDispose: { print("RxSwift HandleEvents OnDispose") })
  .subscribe(onNext: {
    print("RxSwift HandleEvents")
  }, onError: { _ in
    print("RxSwift HandleEvents Error")
  }, onCompleted: {
    print("RxSwift HandleEvents Finish")
  })
  .disposed(by: disposeBag)

// RxSwift HandleEvents OnSubscribe
// RxSwift HandleEvents OnNext
// RxSwift HandleEvents
// RxSwift HandleEvents AfterNext
// RxSwift HandleEvents OnCompleted
// RxSwift HandleEvents Finish
// RxSwift HandleEvents AfterCompleted
// RxSwift HandleEvents OnSubscribed
// RxSwift HandleEvents OnDispose

ReactiveSwift

on ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

SignalProducer(value: Void())
  .on(starting: { print("ReactiveSwift HandleEvents Starting") },
      started: { print("ReactiveSwift HandleEvents Started") },
      event: { _ in print("ReactiveSwift HandleEvents Event") },
      failed: { _ in print("ReactiveSwift HandleEvents Failed") },
      completed: { print("ReactiveSwift HandleEvents Completed") },
      interrupted: { print("ReactiveSwift HandleEvents Interrupted") },
      terminated: { print("ReactiveSwift HandleEvents Terminated") },
      disposed: { print("ReactiveSwift HandleEvents Dispose") },
      value: { print("ReactiveSwift HandleEvents Value") })
  .start { event in
    switch event {
    case .value:
      print("ReactiveSwift HandleEvents")
    case .failed:
      print("ReactiveSwift HandleEvents Error")
    case .completed:
      print("ReactiveSwift HandleEvents Finish")
    default:
      break
    }
  }

// ReactiveSwift HandleEvents Starting
// ReactiveSwift HandleEvents Event
// ReactiveSwift HandleEvents Value
// ReactiveSwift HandleEvents
// ReactiveSwift HandleEvents Event
// ReactiveSwift HandleEvents Completed
// ReactiveSwift HandleEvents Terminated
// ReactiveSwift HandleEvents Finish
// ReactiveSwift HandleEvents Dispose
// ReactiveSwift HandleEvents Started

์ฐธ๊ณ 

PreviousPublishers.TryRemoveDuplicatesNextPublishers.Sequence

Last updated 5 years ago

Was this helpful?

ReactiveX - Operators - Do