我有一个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)
})
为什么退回后{} {1}}上未调用订阅。
相反,我必须明确地订阅该可观察的对象,并将事件传递给父可观察的对象,然后它才起作用。这样做会增加我编写的代码。
of
我做错什么了吗?或向我展示一种更好的方法。
答案 0 :(得分:1)
您需要从函数中返回of
,而不是在Observable.create
内部
这是工作中的blitz
将您的emitEventFrom
更改为关注
function emitEventFrom(thisObservable: boolean): Observable<string> {
if (thisObservable) {
return Observable.create(function (observer: Observer<String>) {
observer.next('thisObservable')
observer.complete();
});
} else {
return of('Other observable');
}
}