.flatMap {Observable.from(array)}永远不会在RxSwift中完成

时间:2017-09-29 08:51:32

标签: rx-swift

也许我误解了一些基本概念,但它看起来像是一个错误。将可观察的数组转换为可观察的单个项时,生成的observable永远不会完成。更具体地说,.debug()//#1行执行日志完成事件,但.debug()//#2不执行。在完成“数组”可观察后,有关如何使'items'可观察的任何想法都完成了吗?

let array: Observable<[Any]> = Observable.just([0])
let items = array.flatMap {
    Observable.from($0)
        .debug() // #1
}
.debug() // #2

1 个答案:

答案 0 :(得分:0)

Observable
    .just([0, 1])
    .debug("0>")
    .flatMap({ Observable.from($0) })
    .debug("2>")
    .subscribe()
    .disposed(by: disposeBag)

日志是:

0> -> subscribed
0> -> Event next([0, 1])
0> -> Event completed
0> -> isDisposed

2> -> subscribed
2> -> Event next(0)
2> -> Event next(1)
2> -> Event completed
2> -> isDisposed

所以,它对我有用。你确定你在收到意外结果后发布的方式完成了吗?