代码之家  ›  专栏  ›  技术社区  ›  Jack Guo

Rxswift如何映射到OnComplete事件

  •  0
  • Jack Guo  · 技术社区  · 7 年前

    我有一个 BehaviorSubject<[Int]> ,数组的长度一次增加一个。我想要一个 Observable 发出一个 completed 事件,当第一个元素添加到数组中时,我不关心后面会发生什么。怎么做?

    1 回复  |  直到 7 年前
        1
  •  2
  •   kiwisip    7 年前

    将订阅包装到 BehaviorSubject 变成你自己的 Observable 会打电话的 onCompleted 当你的内容 行为主体 更改:

    let array = BehaviorSubject<[Int]>(value: [])
    
    var observable: Observable<Void> {
        return Observable<Void>.create { observer in
        // skip first element as BehaviorSubject repeats last value on subscription
            array.skip(1).subscribe(onNext: { _ in
                observer.onCompleted()
            })
        }
    }
    

    然后这样使用:

    observable.subscribe(onCompleted: {
        print("bump")
    }).disposed(by: disposeBag)
    
    array.onNext([1]) // now "bump" gets printed
    array.onNext([1, 2])
    
    推荐文章