有没有办法让同步函数订阅其中的可观察对象?

Is there a way to have a sync function that subscribes to an observable within it?

假设我有这个代码

observableMethod(): 可观察到{ ... Return of ([1, 2, 3]); }

notObservableMethod():整数{

让myVal;

如果(isOM){ this.observableMethod().管道( 第一的() ).subscribe( val => 我的价值=价值; }); } 别的 { myVal = this.nonAsyncMethod(); }

return myVal * 5; }

我可以对 notObservableMethod 做些什么,以便它可以 return myVal * 5;?意味着它必须是同步方法?

编辑:实际上,val 是一个 url 并且我有一个 post 用于 url 的过程,在上面的示例中我 post 更复杂在我导航到它之前。目前,我所做的是为 post 进程创建另一个方法,然后在每个条件下调用它,或者如果它是可观察的,则在订阅中调用它,但我在想是否有更好的方法。谢谢!

由于我不完全确定我是否理解整个代码段,我将尝试根据您的示例来指导您。我试图找出是否有更好的方法,在你订阅之前使用一些 RxJS 运算符,或者在你的模板中使用 async$ 管道。

我会将上面的代码更改为如下内容:

observableMethod(): Observably { ... Return of([1, 2, 3]); }

notObservableMethod(): Observable<number> {

  const observableSource = isOM ? this.observableMethod() : Observable.of(nonAsyncMethod());

  return observableSource.pipe(first(), map(val => val * 5)); 
}