angular2 rxjs检查forkJoin是否完成的方法

angular2 rxjs检查forkJoin是否完成的方法,angular,rxjs,Angular,Rxjs,我想知道在forkJoin之后是否可以调用一些rxjs操作,以了解我的并行异步任务是否已经完成,这样我就可以在angular2模板中使用类似于*ngIf=“loaded | async”的东西 我想出了一个解决办法,但对我来说似乎很混乱。 我打赌有一种更干净的rxJS方法可以做到这一点 plunkr如果您需要: 使用CombineTest。像这样的方法应该会奏效: this.loaded = this.something1().combineLatest( this.something

我想知道在forkJoin之后是否可以调用一些rxjs操作,以了解我的并行异步任务是否已经完成,这样我就可以在angular2模板中使用类似于*ngIf=“loaded | async”的东西

我想出了一个解决办法,但对我来说似乎很混乱。 我打赌有一种更干净的rxJS方法可以做到这一点

plunkr如果您需要:


使用
CombineTest
。像这样的方法应该会奏效:

this.loaded = this.something1().combineLatest(
    this.something2(),
    function (s1, s2) { return true }
).take(1);

另外请注意,我在最后调用了
take(1)
,以确保我们只发出一个事件,因为它只会被加载一次。

我认为这可能更简单:

this.loaded = Observable.forkJoin(this.something1(), this.something2()).map(_=>true);

我想你可以把两者结合起来,然后把它们映射成布尔值。你说得对!好多了。谢谢。没问题,我写了一个答案,我会怎么做。:)谢谢我是rxjs的新手,很难知道…当我让东西工作起来的时候…我是用一种愚蠢的方式还是一种好的方式?到时候我会知道的,但现在我真的不担心,每个人都需要时间!实际上我已经试过了,但是失败了。因为我的真实的something1和something2返回了可观测的,它们有自己的映射函数,但没有返回任何东西。一旦我改变了一些东西1和2的可观测映射函数来返回true(或任何东西),它就工作了。
this.loaded = this.something1().combineLatest(
    this.something2(),
    function (s1, s2) { return true }
).take(1);
this.loaded = Observable.forkJoin(this.something1(), this.something2()).map(_=>true);