【问题标题】:Combine - test if CurrentValueSubject has any subscribersCombine - 测试 CurrentValueSubject 是否有订阅者
【发布时间】:2019-12-12 11:32:53
【问题描述】:

我想验证某些CurrentValueSubject 是否添加了任何订阅。有什么方法可以验证吗?

【问题讨论】:

  • 订阅或订阅者?有一个很大的不同。为什么你需要知道这一点?似乎违反了Combine的全部目的。
  • 您可能会在 Swift Combine: Check if Subject has observer? 主题中找到有用的建议方法。

标签: ios swift combine


【解决方案1】:

最简单的方法可能是使用handleEvents 并使用计数器进行跟踪。

class A {

    var count = 0
    let subject = CurrentValueSubject<Bool, Never>(true)

    func myStuff() {
        subject.handleEvents(receiveSubscription: { [unowned self] _ in
            self.count += 1
        }, receiveCompletion: { [unowned self] _ in
            self.count -= 1
        }, receiveCancel: {
            self.count -= 1
        })
    }
}

不确定这是否适合您的问题。

您甚至可以创建一个自定义 Publisher,它在内部处理计数并将其公开为只读属性,这可能会更好。

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2020-02-09
    • 2018-06-22
    • 2021-03-16
    相关资源
    最近更新 更多