Я пытаюсь вернуть Observable
, который создается асинхронно в обратном вызове:
const mkAsync = (observer, delay) =>
setTimeout(() => Observable.of('some result').subscribe(observer), delay)
const create = arg => {
const ret = new Subject()
mkAsync(ret, arg)
return ret
}
Поэтому я использую Subject
в качестве одноадресного прокси, который подписан на базовый Observable
в обратном вызове.
Проблема, с которой я столкнулся в этом решении, заключается в том, что когда я отписываюсь от подписки Subject
, отписка не пересылается на базовый Observable
.Похоже, мне нужен какой-то тип пересчета, чтобы отменить подписку Subject
, когда подписчиков больше нет, но я не смог понять это при использовании этого стиля императивного обратного вызова.
IЯ должен оставить mkAsync
пустым и ищу альтернативную реализацию.
Это правильный способ сделать это?Есть ли альтернативное решение для использования Subject
?
Как мне убедиться, что созданный Observable
отменен (unsubscribe
вызывается на Subscription
), когда субъект отписался от подписки?