из этой ссылки https://developer.apple.com/documentation/combine/publishers/merge/share ()
let pub = (1...3).publisher
.delay(for: 1, scheduler: DispatchQueue.main)
.map( { _ in return Int.random(in: 0...100) } )
.print("Random")
.share()
cancellable1 = pub
.sink { print ("Stream 1 received: \($0)")}
cancellable2 = pub
.sink { print ("Stream 2 received: \($0)")}
// Prints:
// Random: receive value: (20)
// Stream 1 received: 20
// Stream 2 received: 20
// Random: receive value: (85)
// Stream 1 received: 85
// Stream 2 received: 85
// Random: receive value: (98)
// Stream 1 received: 98
// Stream 2 received: 98
но если мне это нравится ниже, общий доступ не будет работать так, как я ожидал
var pub: Publishers.Share<AnyPublisher<Int, Never>> {
(1...3).publisher
.delay(for: 1, scheduler: DispatchQueue.main)
.map( { _ in return Int.random(in: 0...100) } )
.print("Random")
.eraseToAnyPublisher()
.share()
}
cancellable1 = pub
.sink { print ("Stream 1 received: \($0)")}
cancellable2 = pub
.sink { print ("Stream 2 received: \($0)")}
// Prints:
// Random: receive value: (99)
// Stream 1 received: 99
// Random: receive value: (56)
// Stream 1 received: 56
// Random: receive value: (38)
// Stream 1 received: 38
// Random: receive finished
// Random: receive value: (98)
// Stream 2 received: 98
// Random: receive value: (11)
// Stream 2 received: 11
// Random: receive value: (32)
// Stream 2 received: 32
Почему не работает share со вторым случаем?