2017-10-18 4 views
0

私の問題に対する解決策を見つけることができません。誰かが助けてくれることを願って、私は説明します。 APIを呼び出すたびにリフレッシュサービスを適用する必要があります。サブライド処理が完了した場合にのみデータを取得する方法

問題は、私はリフレッシュサービスの復帰を待って、私のデータを返す前に治療をしなければならないということです。

this.http.post('/api/ws', json).do(() => { 
     this.http.post('/api/refresh', {}).subscribe(
      (data) => { 
       RefreshService.data.next(Object.assign({}, data)); 
      } 
     ); 
    }).subscribe(data => { 
     console.log('data from /api/ws', data) 
    }) 

私はsubscride処理が完了した場合にのみ、データを取得する必要があります。

はあなたの助けをありがとう:)

+0

'this.http.postを()'た場合にのみ、単一のイベントを発します'(data)=> {...}'が実行され、**処理は**完了です。 –

+0

@GünterZöchbauershow console.logの前にリフレッシュサービスを待つ必要があります –

+0

私はコードを正しく読まなかったことを知りました。 'flatMap'それは –

答えて

1

あなたは以下のようにRefreshServiceを呼び出すためにflatmapmapを使用することができます。

this.http.post('/api/ws', json).flatMap((response) => { 
    return this.http.post('/api/refresh', {}).map(
     (data) => { 
      RefreshService.data.next(Object.assign({}, data)); 
      return response; 
     } 
    ) 
}).subscribe(data => { 
    console.log('data from /api/ws', data) 
}) 
+0

タンクです、フラットマップのリターンが欠けていますが、私は' api/refresh 'からのデータを取得するサブスクライブで' api/ws 'のものではありません。 –

+0

Refresh observableを通して渡す必要があります。編集されました。 – learner

関連する問題