2017-03-15 17 views
0

私はユーザOboevableにforkJoinを預けてみようとしています。そのうちの1つはストリームとして開始されます...私が直接それらに購読すれば、私は応答を受け取りますが、forkJoinは発砲していません。何か案は?観測可能なforkJoinが発射しない

private data$: Observable<any[]>; 
private statuses$: Observable<any[]>; 
private queryStream = new Subject<string>();  

.... 

this.data$ = this.queryStream 
    .startWith('') 
    .flatMap(queryInput => { 
      this.query = queryInput 
      return this._companyService.getCompanies(this.queryRequired + ' ' + this.query, this.page, this.sort); 
       }) 
      .share(); 

... 

Observable.forkJoin(this.statuses$, this.companies$) 
      .subscribe(res => { 
       console.log('forkjoin'); 
       this._countStatus(res[0], res[1]); 
      }); 


// This shows arrays in the console... 

this.statuses$.subscribe(res => console.log(res)); 
this.companies$.subscribe(res => console.log(res)); 

// In the console 
Array[9] 
Array[6] 

答えて

2

forkJoinと非常に一般的な問題は、それが完了する必要があり、少なくとも一つの項目とそれらのすべてを放出するために、すべてのソースの観測を必要とすることです。

つまり、this.statuses$またはthis.companies$がアイテムを放出しない場合、両方が完了するまで、forkJoinは何も放出しません。

this.statuses$.subscribe(
    res => console.log(res), 
    undefined, 
    () => console.log('completed'), 
); 
+0

彼らは両方とも私が購読してコンソールログ場合、私は、彼らが発する配列を見ることができ、アイテムを発します。私はこれを反映するために質問を更新しました。ありがとう – nick

+0

@nickそして、両方とも完結しますか? – martin

+0

私には分かりませんが、何が最善の方法だと思いますか?そうでない場合、どうすればそれらを完成させることができますか?問題は 'queryStream:Subject'にあるようですが、私はまっすぐな' Observable'を作成しています... – nick

0
Observable.forkJoin([ 
     _someService.getUsers(), 
     _someService.getCustomers(), 
    ]) 
     .subscribe((data: [Array<User>, Array<Customer>]) => { 
     let users: Array<User> = data[0]; 
     let customer: Array<Customer> = data[1]; 
     }, err => { 
     }); 





     //someService 
     getUsers():Observable<User> { 
      let url = '/users'; 
      return this._http.get(url, headers) 
      .map(res => res.json()); 
     } 

     getCustomers():Observable<Customer> { 
      let url = '/customers'; 
      return this._http.get(url, headers) 
      .map(res => res.json()); 
     } 
関連する問題