rxjs:withLatestFrom优先级

时间:2019-08-28 13:14:55

标签: angular typescript rxjs

我已经使用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$,因此组合永远都达不到。

关于如何解决该问题的任何想法?

1 个答案:

答案 0 :(得分:1)

使用combineLatest实用程序功能:

import { combineLatest } from 'rxjs';
this.app$ = combineLatest(this.inputApp$, this.scopes$).pipe(...);

combineLatest仅在所有可观察对象都发出值之后才发出,然后每次它们中的任何一个发出。