繁体   English   中英

RxSwift-如何具有可读的CombineLatest事件元素变量名称?

[英]RxSwift - how to have readable combineLatest event element variable names?

var isCurrentlySearchingAddress = Variable<Bool>(false)
var currentSelectedPlace = Variable<GeocodePlace?>(nil)

当我进行订阅时

Observable.combineLatest(viewModel.isCurrentlySearchingAddress.asObservable(), viewModel.currentSelectedPlace.asObservable())

如何获得可读的变量名,而不是01

在此处输入图片说明

如果您仅对next事件感兴趣,可以执行以下操作:

Observable.combineLatest(isCurrentlySearchingAddress.asObservable(), currentSelectedPlace.asObservable())
   .subscribe(onNext: { (isSearchingAddress, selectedPlace) in

   })

或这个(如果您想继续使用subscribe ):

Observable.combineLatest(isCurrentlySearchingAddress.asObservable(), currentSelectedPlace.asObservable())
   .subscribe { event in
      if case let .next(isSearchingAddress, selectedPlace) = event {

      }
   }

您可以这样做:

    Observable.combineLatest(
        varA.asObservable(), varB.asObservable(),
        resultSelector: { value1, value2 in
            print("\(value1) \(value2)")
    }).observeOn(MainScheduler.instance)
        .subscribe()
        .disposed(by: disposeBag)

在这里,您使用的是subscribe(on:)然后强制展开element 万一发生错误, elementnil ,这将导致崩溃。 强制拆开它不是一个好主意。

如果您确定序列永远不会发出错误,或者您不想处理错误,那么最好使用subscribe(onNext:)如下所示:

Observable.combineLatest(viewModel.isCurrentlySearchingAddress.asObservable(), viewModel.currentSelectedPlace.asObservable())
    .subscribe(onNext: { (isCurrentlySearchingAddress, currentSelectedPlace) in
    // Use isCurrentlySearchingAddress: Bool and currentSelectedPlace: GeocodePlace? here.
    if (isCurrentlySearchingAddress) {
        // TODO: 
    }
})

同样不要忘记将其添加到DisposeBag

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM