我试图观察变量,当这个变量的某些属性符合条件时,我想制作一个"可观察的" 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)
还有其他办法吗?我可以在第一个observable上获得一个过滤器,但我不明白如何调用另一个并将其绑定在UI上。
注意:为了清晰起见,我排除了一些其他代码行。
答案 0 :(得分:0)
典型的解决方案是使用 .switchLatest(),如下所示。