Это чрезмерное упрощение того, чего я пытаюсь достичь с помощью комбинирования.
Мне нужно ввести значение в общий издатель, если что-то случится. Здесь вы видите, что если число 2 получено картой, я использую команду send на исходном издателе, чтобы ввести число 3.
Я ожидал бы получить последовательность чисел, но вместо этого я получаю число 3 перед событием, которое вызвало это.
let pub = PassthroughSubject<Int, Never>()
let pubSharered = pub.share().eraseToAnyPublisher()
let anyCanc = pubSharered
.map { value -> Int in
switch value {
case 2:
pub.send(3)
return value
default:
return value
}
}.sink { (value) in
print("Sink: \(value)")
}
pub.send(0)
pub.send(1)
pub.send(2)
pub.send(4)
Результат: 0,1,3,2,4
я ожидал 0,1,2,3,4
.
Кто-нибудь может это объяснить?