swift - RxSwift 如何只订阅一次可观察对象?

标签 swift rx-swift

我想订阅一个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/

相关文章:

ios - 在 Swift 中将闭包作为 init 参数传递

macos - swift 设置为默认浏览器

ios - SKView暂停自动恢复

ios - 没有在 RxSwift 上使用 RxMoya 获得 Completed 事件

ios - Swift 字符串插值打印之间的区别

swift - 为什么 NSURL 不接受包含引号或大括号的有效字符串?

ios - RxSwift 绑定(bind)到变量的格式化值

rx-swift - RxSwift : Convert Observable to a Variable

ios - 处置(取消)可观察的。 SubscribeOn 和observeOn 不同的调度程序

swift - 具有泛型类型的可观察扩展