在RxJS中订阅子Observable的订阅

时间:2019-05-17 04:35:19

标签: typescript rxjs

我有一个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

我做错什么了吗?或向我展示一种更好的方法。

1 个答案:

答案 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');
  }
}