A Publisher
не производит значения, пока ему не будет дано Subscriber
. Оператор map
не является Subscriber
.
. Самое простое решение (упомянутое Саджоном) - использовать sink
:
let a = Just("a")
let b = Just("b")
_ = Publishers.CombineLatest(a, b).sink { a, b in
print(a, b)
}
Обратите внимание, что sink
возвращает AnyCancellable
, и когда этот AnyCancellable
уничтожается, он отменяет подписку. В этом примере _ =
означает, что я не сохраняю этот AnyCancellable
, поэтому он немедленно уничтожается. Это не имеет значения, потому что все Publisher
в этом примере (два Just
и CombineLatest
) работают синхронно. Они опубликовали все, что когда-либо опубликуют sh до того, как AnyCancellable
будет уничтожен. Но в целом вам нужно сохранить AnyCancellable
, если вы подписываетесь на Publisher
, который может публиковать sh значения асинхронно.