質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
RxSwift

RxSwiftは、Reactive ExtensionsのSwift向けの実装です。iOS開発に用いられ、リアクティブプログラミングを可能にします。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

946閲覧

RxSwift subscribeの内部でsubscribeを終了させたい

sportsgari

総合スコア18

RxSwift

RxSwiftは、Reactive ExtensionsのSwift向けの実装です。iOS開発に用いられ、リアクティブプログラミングを可能にします。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/11/11 04:47

編集2019/11/11 10:47

RxSwiftを使用しているのですが、subscribe処理の中で購読を終了させたいと思っています。購読を停止するためにはSubscribeの戻り値をDisposeすれば良いみたいですが、戻り値をSubscribeの内部で使用する方法はありますでしょうか。ご教示願います。

他のsubscribeに影響を与えないように、下記subscribeのみdisposeしたいと考えております。

swift

1 2deviceRepository?.observableDisconnectToDeviceStatus?.subscribe({ event in 3 if event.element != nil && event.element! { 4 self.unbind(navigation: navigation) 5 } 6 }).disposed(by: disposeBag!)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Rxのストリームはcompletedの状態になれば自動的にdisposeされます。これを利用して、目的の条件を満たすイベントが1度流れたらcompletedにするようにストリームを組むのがRx的には自然なやり方かなと思います。

swift

1deviceRepository?.observableDisconnectToDeviceStatus? 2 .filter { event in event.element != nil && event.element! } 3 .first() // 最初のイベントだけ流してcompleteする 4 .subscribe { [weak self] in self?.unbind(navigation: navigation) } 5 .disposed(by: disposeBag)

投稿2019/11/11 08:40

編集2019/11/11 08:45
kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sportsgari

2019/11/11 10:45

ご回答いただき誠にありがとうございます。 説明不足で申し訳ありませんが、他のsubscribeは終了させずに一つだけ終了させたいと考えています。
kakajika

2019/11/11 11:58

他のsubscribeというのは何でしょうか?回答した方法でdisposeされるのは対象の購読のみです。
sportsgari

2019/11/11 23:59

申し訳ありません。理解不足でした。ご回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問