有没有办法让同步函数订阅其中的可观察对象?
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));
}
假设我有这个代码
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));
}