当我必须选择性地使用 http Observable 或变量时,是否要从我的服务创建一个 Observable?

Do I create an Observable from my service when I have to optionally use http Observable or a variable?

我有一项服务可以检查 API 端点的状态数据。在某些情况下,我不需要根据其他本地数据进行 API 调用。此检查发生在应用程序的几个不同组件中。

因为我想将逻辑封装到服务中 - 我是否必须创建一个自定义 Observer 来 return 组件的变量?

我的方法 isClosed 检查一些局部变量并基于 returns true 或执行 API 调用。

isClosed(): Observable<boolean> {
    let o: Observable<boolean>;


    if (myCustomLogic) {
      //do some stuff...
      //this is the api call (http.get) which returns Observable<boolean>
      o = this.checkClosed();

    } else {
      //based on myCustomLogic
      //I dont need to call the api, but I am 
      //assuming i still need an observable???
      o = new Observable((observer) => {
        console.log('Custom observer');
        observer.next(true);

        return {
          unsubscribe(): void {
            //i dont what to do here
          }
        };

      });
    }
    return o;
}

是的,您仍然需要一个始终发出 true 并完成的 observable。

这是一个非常常见的用例,已经有一个名为 of 的“快捷方式”,所以基本上您的代码可以缩短为:

import { of } from "rxjs";
// ...
isClosed(): Observable<boolean> {
    if (myCustomLogic) {
      //do some stuff...
      //this is the api call (http.get) which returns Observable<boolean>
      return this.checkClosed();
    } else {
      return of(true);
    }
}