[RxSWIFT]SignalとDriver!
リアクション型プログラミングReactive Xを学んでいる最近、Driverの用途は分かっていますが、Signalという見慣れない概念が出てきたので勉強してみたいと思います.
結論から,信号はパブリッシュSubjectと類似しており,DriverはBehaviorSubjectと類似している.では、2つの特性にはどんな共通点と違いがあるのでしょうか.
💡 SignalとDriverは、RxSWIFTとUIKETを組み合わせたRxCococoで使用されるツールです.
エラーは発生しません. メインスレッドで実行します.
SignalとDriverを使用する最大の特徴は,上述した共通点である.UIはメインスレッドで処理する必要があるため、RxCocoaのこれらの特性を使用しないと、各論理をスレッドに変換することは困難である.
エラーが発生しないのもこのような脈絡に似ています.エラーが発生してもUIは反応を続けなければならないので、Streamは死ぬのではなく生き続けるべきだ.
前述したように、SignalはPublishSubjectに似ており、DriverはBehaviorSubjectに似ている.イメージで簡単に見てみましょう
下図のようにDriverについては、subscribeを行うと、最近のデータが受信されます.
また、driveという論理を実現して、受信したイベントを処理することもできる.
Signalの場合、サブスクリプションがDriverと異なる場合、最近のデータは返されず、サブスクリプションが受信された後に発生した値が返されます.
同様に、subscribeではなくemitという方法でイベントを処理します.
https://reactivex.io/documentation/subject.html
https://medium.com/@hongseongho/%EB%B2%88%EC%97%AD-signal-and-relay-in-rxcocoa-4-619d5194dcbd![](https://media.vlpt.us/images/wannabe_eung/post/99602d30-1621-4cef-8ca2-97ecb4b5b302/image.png)![](https://media.vlpt.us/images/wannabe_eung/post/36604098-218a-4f00-9619-4e1eff546eeb/image.png )
結論から,信号はパブリッシュSubjectと類似しており,DriverはBehaviorSubjectと類似している.では、2つの特性にはどんな共通点と違いがあるのでしょうか.
💡 SignalとDriverは、RxSWIFTとUIKETを組み合わせたRxCococoで使用されるツールです.
信号とドライバの共通点
SignalとDriverを使用する最大の特徴は,上述した共通点である.UIはメインスレッドで処理する必要があるため、RxCocoaのこれらの特性を使用しないと、各論理をスレッドに変換することは困難である.
エラーが発生しないのもこのような脈絡に似ています.エラーが発生してもUIは反応を続けなければならないので、Streamは死ぬのではなく生き続けるべきだ.
SignalとDriverの違い
前述したように、SignalはPublishSubjectに似ており、DriverはBehaviorSubjectに似ている.イメージで簡単に見てみましょう
Driverの場合
下図のようにDriverについては、subscribeを行うと、最近のデータが受信されます.
また、driveという論理を実現して、受信したイベントを処理することもできる.
searchButtonTapped
.asDriver(onErrorJustReturn: "")
.drive(to: self.rx.endEditing)
シグナルの場合
Signalの場合、サブスクリプションがDriverと異なる場合、最近のデータは返されず、サブスクリプションが受信された後に発生した値が返されます.
同様に、subscribeではなくemitという方法でイベントを処理します.
searchButtonTapped
.asSignal()
.emit(to: self.rx.endEditing)
https://reactivex.io/documentation/subject.html
https://medium.com/@hongseongho/%EB%B2%88%EC%97%AD-signal-and-relay-in-rxcocoa-4-619d5194dcbd![](https://media.vlpt.us/images/wannabe_eung/post/99602d30-1621-4cef-8ca2-97ecb4b5b302/image.png)![](https://media.vlpt.us/images/wannabe_eung/post/36604098-218a-4f00-9619-4e1eff546eeb/image.png )
Reference
この問題について([RxSWIFT]SignalとDriver!), 我々は、より多くの情報をここで見つけました https://velog.io/@wannabe_eung/RxSwift-Signal과-Driver를-알아보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol