Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rx swift 在另一个订阅触发后启动订阅_Rx Swift - Fatal编程技术网

Rx swift 在另一个订阅触发后启动订阅

Rx swift 在另一个订阅触发后启动订阅,rx-swift,Rx Swift,有两个可观察对象:a和b。我想在第一个可观察(a)触发(即生成第一个onNext事件)后订阅第二个可观察(b) 我试过了 b.skipUntil(a).subscribe(onNext:{ print("B: \($0)") }).disposed(by: _bag) 但是没有运气,因为b是一个冷冰冰的可见物。据我所知,它立即启动并被skipUntil(a)阻止 这种方法似乎有效: a.subscribe(onNext:{_ in //

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

我试过了

    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)

但我意识到这是一个糟糕的做法,不是一个好办法。

这是一个简单的
平面图

let c = a.flatMap { _  in b }
您可能希望在平面图之前添加一个
。取(1)
,或者查看不同种类的平面图,看看哪一个适合您的用例。最好是在flatMap闭包中生成可观察的
b
,而不是像上面那样传递它


也许这个答案可以帮助你