Нет такой вещи, как «события до того, как я подписался», потому что Observable не начинает генерировать события, пока он не был подписан.
Например, посмотрите на функцию create
.
let obs = Observable.create { observer in
// do stuff to observer
return Disposables.create()
}
Это замыкание, передаваемое в функцию создания, вызывается каждый раз, когда , на которое подписывается наблюдаемое. Другими словами, каждая подписка получает свою собственную серию событий, и каждое из них начинается с выполнения sh закрытия. Не было «событий до подписки».
Все вышеперечисленное относится к «холодной» наблюдаемой по умолчанию. Существует также понятие «горячих» наблюдаемых (например, субъектов), которые делятся своими событиями со всеми подписчиками, но они не хранят старые события, если вы явно не используете одно, предназначенное для этого.
Итак решение вашей проблемы не в том, чтобы искать взлом, а вместо этого использовать подходящий инструмент для работы.
ОБНОВЛЕНИЕ
Что касается вашего комментария об использовании BehaviorSubject. Простое решение - просто не использовать его, если вам не нужен его функционал. Вместо этого используйте PublishSubject. Другое решение - использовать .skip(1)
, чтобы избежать получения текущего значения.