flatMap()が1つのイベントで2回呼び出されました

a.ajwani

私が持ってViewControllerいる上init()、私が使用してホットストリームを作成しますPublishSubject私はその後、私はへのストリームを渡すViewModel使用するstream.asObservable()viewDidLoad()ように、ViewModelそれはビューの結合を作成する前に終了するまで待たなければならないので、ビューから生成されたストリームである他の依存関係を持っていますViewModel作成後、ViewModel自分のイベントをViewControllerストリームにプッシュし、ViewModelが非同期リクエスト(これもRxでラップされています)を起動することでイベントに反応することを期待します。

ViewController:

class ExampleViewController: ViewController {

    ....

    private let exampleStream: PublishSubject<Bool>

    init() {
        self.exampleStream = PublishSubject<Bool>()
    }

    viewDidLoad() {
        self.viewModel = viewModelFactory.create(exampleStream.asObservable())
        self.exampleStream.onNext(true)
    }

    ....
}

ViewModel:

class ExampleViewModel {

    init(stream: Observable<Bool>) {
        stream.flatMap { _ in
            doSomethingAsyncThatReturnsAnObservable()
        }
    }

    private func doSomethingAsyncThatReturnsAnObservable() -> Observable<CustomObject> { ... }
}

私の問題はdoSomethingAsyncThatReturnsAnObservable()、ストリーム内にイベントが1つしかない場合に、2回呼び出されることです。var count = 1; stream.subscribeNext { _ in print(count++) }どのプリントを使っその事実を確認しました1

なぜsubscribeNext()各イベントで1回flatMap()発砲するのに、2回発砲するのかについて何か考えはありますか?

そこにセルグ

これはflatMap、すべてのサブスクリプションで呼び出されるためです。

一度呼び出したい場合は shareReplay(1)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

.clickイベントが2回呼び出されましたか?

分類Dev

ajax呼び出し後にJqueryイベントが2回バインドされました

分類Dev

click()イベントがjqueryで2回呼び出されています

分類Dev

applyTransformationがinterpolatedTime == 1で2回呼び出されました

分類Dev

Yii2アクティブフォーム送信イベントが2回呼び出されました

分類Dev

VSTOWindowsフックのキーダウンイベントが10回呼び出されました

分類Dev

シーンCoronaSDKでタイマーが2回呼び出されました

分類Dev

AngularJSでコントローラーが2回呼び出されました

分類Dev

1回の呼び出しでODEの導関数が呼び出された回数を見つける方法。

分類Dev

Androidフラグメントのライフサイクル:onResumeが2回呼び出されました

分類Dev

「vector-set!」を1回呼び出すのはなぜですか。1つの内部ベクトルが与えられたときに、ネストされたベクトル内のいくつかのベクトルを変更しますか?

分類Dev

jqueryでクリックイベントが2回呼び出される理由

分類Dev

2回以上呼び出されたjQueryのクリックイベント

分類Dev

ActionListenerが2回呼び出され、1回追加されました

分類Dev

クリックイベントリスナーによって呼び出された関数は、クリックせずに呼び出されますが、2回目の実行時にのみ呼び出されます

分類Dev

jqRouter.renderViewSuccessイベントハンドラーが2回呼び出されるのはなぜですか?

分類Dev

1回使用するインポートされたモジュール関数が2回呼び出されるのはなぜですか?

分類Dev

エラー:「インポート」で複数のIonicModule.forRoot呼び出しが見つかりました。1つだけ許可されます

分類Dev

Spring MVC InterceptorHandlerがDeferredResultで2回呼び出されました

分類Dev

モックでの呼び出しが1回期待されていましたが、0回でした

分類Dev

AndroidフラグメントOnCreateViewが2回呼び出されました

分類Dev

Springコントローラーが2回呼び出されました

分類Dev

Spring ContextRefreshedイベントが2回呼び出されるのはなぜですか?

分類Dev

春の注釈AOPが2回呼び出されました

分類Dev

カスタムイベントは2回目の呼び出しでnullになりました

分類Dev

2回呼び出されたイベントにコールバックがアタッチされるのはなぜですか?

分類Dev

クイックソートのためにstd :: partitionが2回呼び出されました

分類Dev

ViewScopeコンストラクターが2回呼び出されましたが、理由は不明です

分類Dev

1回のマウスダウンでコンソールロガーが2回呼び出されました

Related 関連記事

  1. 1

    .clickイベントが2回呼び出されましたか?

  2. 2

    ajax呼び出し後にJqueryイベントが2回バインドされました

  3. 3

    click()イベントがjqueryで2回呼び出されています

  4. 4

    applyTransformationがinterpolatedTime == 1で2回呼び出されました

  5. 5

    Yii2アクティブフォーム送信イベントが2回呼び出されました

  6. 6

    VSTOWindowsフックのキーダウンイベントが10回呼び出されました

  7. 7

    シーンCoronaSDKでタイマーが2回呼び出されました

  8. 8

    AngularJSでコントローラーが2回呼び出されました

  9. 9

    1回の呼び出しでODEの導関数が呼び出された回数を見つける方法。

  10. 10

    Androidフラグメントのライフサイクル:onResumeが2回呼び出されました

  11. 11

    「vector-set!」を1回呼び出すのはなぜですか。1つの内部ベクトルが与えられたときに、ネストされたベクトル内のいくつかのベクトルを変更しますか?

  12. 12

    jqueryでクリックイベントが2回呼び出される理由

  13. 13

    2回以上呼び出されたjQueryのクリックイベント

  14. 14

    ActionListenerが2回呼び出され、1回追加されました

  15. 15

    クリックイベントリスナーによって呼び出された関数は、クリックせずに呼び出されますが、2回目の実行時にのみ呼び出されます

  16. 16

    jqRouter.renderViewSuccessイベントハンドラーが2回呼び出されるのはなぜですか?

  17. 17

    1回使用するインポートされたモジュール関数が2回呼び出されるのはなぜですか?

  18. 18

    エラー:「インポート」で複数のIonicModule.forRoot呼び出しが見つかりました。1つだけ許可されます

  19. 19

    Spring MVC InterceptorHandlerがDeferredResultで2回呼び出されました

  20. 20

    モックでの呼び出しが1回期待されていましたが、0回でした

  21. 21

    AndroidフラグメントOnCreateViewが2回呼び出されました

  22. 22

    Springコントローラーが2回呼び出されました

  23. 23

    Spring ContextRefreshedイベントが2回呼び出されるのはなぜですか?

  24. 24

    春の注釈AOPが2回呼び出されました

  25. 25

    カスタムイベントは2回目の呼び出しでnullになりました

  26. 26

    2回呼び出されたイベントにコールバックがアタッチされるのはなぜですか?

  27. 27

    クイックソートのためにstd :: partitionが2回呼び出されました

  28. 28

    ViewScopeコンストラクターが2回呼び出されましたが、理由は不明です

  29. 29

    1回のマウスダウンでコンソールロガーが2回呼び出されました

ホットタグ

アーカイブ