Combine - 测试 CurrentValueSubject 是不是有订阅者

Posted

技术标签:

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

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

【问题讨论】:

订阅或订阅者?有一个很大的不同。为什么你需要知道这一点?似乎违反了Combine的全部目的。 您可能会在 Swift Combine: Check if Subject has observer? 主题中找到有用的建议方法。 【参考方案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,它在内部处理计数并将其公开为只读属性,这可能会更好。

【讨论】:

以上是关于Combine - 测试 CurrentValueSubject 是不是有订阅者的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI ObjectBinding 不会使用 combine 接收来自可绑定对象的 didchange 更新

在 python 上,如何将 CurrentValue 与 previousValue 进行比较并输出最大值

SpringBoot 入门教程:Postman常用功能

SpringBoot 入门教程:Postman常用功能

一个数组的和

JavaScript 数组遍历