我已经使用Observable
编码了withLatestFrom
:
this.scopes$ = service.getScopes();
此外,我已经为另一个Observable
进行了编码:
@Component(...)
export class MyComponent {
@Input('app')
public set app(app: ApplicationUser) {
this._app = app;
this.inputApp$.next({...this._app});
};
constructor(...) {
this.inputApp$ = new BehaviorSubject<ApplicationUser>({...this._app});
this.app$ = this.inputApp$.pipe(this.digestAppPipe());
}
}
其中digestAppPipe
是:
private digestAppPipe = () => pipe(
withLatestFrom(this.scopes$, anySelectFunction,
...
);
因此,app$
是inputApp$ + scopes$
个可观察值的组合。
问题在于inputApp$
的发射时间早于scopes$
,因此组合永远都达不到。
关于如何解决该问题的任何想法?
答案 0 :(得分:1)
使用combineLatest
实用程序功能:
import { combineLatest } from 'rxjs';
this.app$ = combineLatest(this.inputApp$, this.scopes$).pipe(...);
combineLatest
仅在所有可观察对象都发出值之后才发出,然后每次它们中的任何一个发出。