【发布时间】:2019-05-17 04:35:19
【问题描述】:
我有emitEvenFrom 方法,它接受一个参数并发出事件。
当参数为 false 时,它不会发出任何事件,但会直接返回 of 类型的 observable。
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 Observable 时订阅没有调用它。
相反,我必须显式订阅那个 observable 并将事件传递给父 observable,然后它才会起作用。这样做会增加我编写的代码。
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)
})
}
})
}
我做错了吗?或告诉我一个更好的方法。
【问题讨论】:
标签: typescript rxjs