When using a Future I'm not able to receive the cancel event.
Future<String, Never> { promise in
promise(.success("Hello Stackoverflow"))
}
.eraseToAnyPublisher()
.handleEvents(receiveCancel: {
print("Cancel event received here")
})
.sink(receiveValue: { value in
print(value)
})
.store(in: &disposeBag)
disposeBag.map { $0.cancel() }
Interestingly using a subject it's working and I'm getting the event.
let subject = PassthroughSubject<String, Never>()
subject.send("Hello Stackoverflow")
subject.eraseToAnyPublisher()
.handleEvents(receiveCancel: {
print("Cancel event received here")
})
.sink(receiveValue: { value in
print(value)
})
.store(in: &disposeBag)
disposeBag.map { $0.cancel() }
So why is Combine behaving that way and how I can resolve this?