我想订阅一个observable,但在某种逻辑上,我会重新订阅它。如果我不想为它写一些特殊的逻辑,那么在添加新订阅时如何处理最后一个订阅?或者,当我订阅它时,我怎么知道这个 observable 是否已经被订阅了?
最佳答案
对于您正在寻找的最简单的解决方案确实是他们为此提供的方法 - func take(_ count: Int)
。
这是一个 Playground 示例:
import RxSwift
var variable = Variable(1)
variable.asObservable().take(1).subscribe(
onNext: { print("onNext: \($0)") },
onError: { print("onError: \($0)") },
onCompleted: { print("onCompleted") },
onDisposed: { print("onDisposed") })
variable.value = 2
print("done")
结果是:
onNext: 1
onCompleted
onDisposed
done
是的,这在您想通过流过滤事件的地方很有用,在存储订阅很尴尬的地方。
关于swift - RxSwift 如何只订阅一次可观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558977/