当某个发布者尚未发布时,如何使CombineLatest发送值?

时间:2020-05-19 09:52:27

标签: swift reactive-programming combine

每两个发布者之一更改时,我都尝试使用CombineLatest来发布值。恰好这些发布者之一是 ObservedObject PassthroughSubject<Void, Never>)的 objectWillChange 属性。

Publishers.CombineLatest(
    settings.objectWillChange,
    $aPublishedProperty)
    .sink(receiveValue: { _, _ in
        // Do something…
    })
    .store(in: &subscriptions)

这里的问题是只要该对象不变, CombineLatest 就不会发出。而且我实际上并不关心它的 void 值。我只是将其放在此处,以便将来更改时,我的接收器会再次被调用。

如何在没有初始值的情况下触发CombineLatest?即:仅更改aPublishedProperty吗?

1 个答案:

答案 0 :(得分:1)

有一个不错的prepend(_:)运算符,可用于使发布者发出初始值。

对于我来说,我要做的就是将.prepend(())添加到objectWillChange

Publishers.CombineLatest(
    settings.objectWillChange.prepend(()), // ⬅️ Useful stuff here
    $aPublishedProperty)
    .sink(receiveValue: { _, _ in
        // Do something…
    })
    .store(in: &subscriptions)

docs

中查看