Я читаю эту книгу о RxSwift "Реактивное программирование со Swift 4" Пакта (https://www.oreilly.com/library/view/reactive-programming-with/9781787120211/).). В одном разделе книга гласит:
"Утилизация подписки вызовет базовую наблюдаемую
последовательность для завершения завершенного события и завершения "
Однако я узнал, что эта фраза неверна. Вот пример:
let publisher = PublishSubject<Int>() //Create an <Int> sequence
let subscription1 = publisher.asObservable() //Create 1st subscription
.debug("Subscription 1")
.subscribe { (event) in
print(event)
}
let subscription2 = publisher.asObservable() //Create 2nd subscription
.debug("Subscription 2")
.subscribe { (event) in
print(event)
}
publisher.onNext(1) //Emit first event
subscription1.dispose() //Dispose the 1st subscription. According to the phrase above, publisher should emit an onComplete event
publisher.onNext(2) //Emit second event
Как говорится в моем комментарии в коде, по адресу subscription1.dispose () , publisher должен был генерировать событие onComplete, но на самом деле он все еще может генерировать новые события как обычно при этом вывод:
2018-11-01 19:43:59.796: Subscription 1 -> subscribed
2018-11-01 19:43:59.798: Subscription 2 -> subscribed
2018-11-01 19:43:59.798: Subscription 1 -> Event next(1)
next(1)
2018-11-01 19:43:59.798: Subscription 2 -> Event next(1)
next(1)
2018-11-01 19:43:59.799: Subscription 1 -> isDisposed
2018-11-01 19:43:59.799: Subscription 2 -> Event next(2)
next(2)
Может ли кто-нибудь подтвердить, что мое понимание верно? Или я что-то пропустил за кулисами RxSwift?
Заранее спасибо