在另一个订阅触发后开始订阅

问题描述 投票:1回答:1

有两个观测值:ab。我想在触发第一个可观察值(b)(即生成了第一个a事件)之后订阅第二个可观察值(onNext)。

我尝试过

    b.skipUntil(a).subscribe(onNext:{
        print("B: \($0)")
    }).disposed(by: _bag)

但是没有运气,因为b是冷的。据我了解,它会立即启动并被skipUntil(a)阻止。

此方法似乎有效:

    a.subscribe(onNext:{_ in
        // ... handle a ...

        b.subscribe(onNext:{
            print("B: \($0)")
        }).disposed(by: self._bag)
    }).disposed(by: _bag)

但是我意识到这是一种不好的做法,不是可行的方法。

rx-swift
1个回答
0
投票

这是简单的flatMap

let c = a.flatMap { _  in b }

[您可能想在flatMap之前添加.take(1)或查看flatMap的不同种类,然后查看哪个适合您的用例。并且最好是在flatMap闭包内部生成可观察到的b,而不是像上面那样传递给它。

https://medium.com/@danielt1263/rxswifts-many-faces-of-flatmap-5764e6c2018c

© www.soinside.com 2019 - 2024. All rights reserved.