簡體   English   中英

如何有條件地觀察和綁定RxSwift

[英]How to conditionally observe and bind with RxSwift

我試圖觀察一個變量,並且當此變量的某些屬性符合條件時,我想進行“可觀察”的API調用,並將該調用的結果與某些UI元素綁定。 它以我在這里介紹的方式起作用,但是我認為可以更好地實現它,因為現在我嵌套了訂閱方法:

self.viewModel.product
    .asObservable()
    .subscribe { [weak self](refreshProduct) in

        self?.tableView.reloadData()
        self?.marketProduct.value.marketProduct = refreshProduct.element?.productId

        if refreshProduct.element?.stockQuantity != nil {

            self?.viewModel.getUserMarketCart()
                .map({ (carts) -> Bool in
                    return carts.cartLines.count > 0
                }).bind(onNext: { [weak self](isIncluded) in
                    self?.footerView.set(buyable: isIncluded)
                }).disposed(by: (self?.disposeBag)!)
        }
    }.disposed(by: disposeBag)

還有其他方法嗎? 我可以在第一個可觀察的對象上獲得過濾器,但是我不明白如何調用另一個並在UI上綁定它。

注意:為了使代碼清晰,我排除了其他幾行代碼。

一個典型的解決方案是使用.switchLatest() ,如下所示。

  • 創建* let switchSubject = PublishSubject <Observable <Response >>()“
  • 將UI綁定到它的最新值: switchSubject.switchLatest()。bind(...
  • 用新的請求更新'switchSubject': switchSubject.onNext(newServiceCall)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM