У меня есть emitEvenFrom
метод, который принимает один аргумент и генерирует событие.
когда аргумент равен false, он не генерирует никакого события, хотя непосредственно возвращает наблюдаемое типа of
.
import { Observable, Observer, of } from 'rxjs'
function emitEventFrom(thisObservable: boolean): Observable<string> {
return Observable.create(function (observer: Observer<String>) {
if (thisObservable) {
observer.next('thisObservable')
observer.complete()
} else {
// Returning Rx.Observable.of()
return of('Other observable')
}
})
}
emitEventFrom(false).subscribe({
next: (value) => console.log(value),
error: (error) => console.log(error)
})
Почему подписка не была вызвана of
Наблюдается, когда я ее вернул.
Вместо этого я должен явно подписаться на это наблюдаемое и передать событие родительскому наблюдаемому, тогда только оно работает. Это увеличивает код, который я пишу.
function emitEventFrom(thisObservable: boolean): Observable<string> {
return Observable.create(function (observer: Observer<String>) {
if (thisObservable) {
observer.next('thisObservable')
observer.complete()
} else {
// Returning Rx.Observable.of()
of('Other observable').subscribe({
next: (value) => observer.next(value),
error: (error) => observer.error(error)
})
}
})
}
Я что-то не так делаю? или покажи мне лучший способ.