2016-03-23 11 views
0

私はクラスHttpを拡張しているクラスを持っています。それはMyHttpと呼ばせてください。 クラスを拡張するMyJwtHttpクラスもあります。angular2:Obserable <Response>すべてのサブスクリプションが完了した後にresponse.json()

myJwtHttp.request(..).map(res=>res.json() 

requestメソッドの実装です:

class MyHttp extends Http { 
    request(url,...){ 
     .. 
     .. 
    return super.request(url).subscribe(res=> doSomething(res)) 
    } 
} 

は、私はこの問題は、私はこのような何かをやっている場合があることであるJSONとして応答を返すことができるようにしたいです

MyHttpクラスのサブスクライバの前にmap関数が呼び出されるという問題があります。これは私が代わりにmaplastを使用してみましたが

... doSomething(res)の入力はJSONではなく、応答そのものであることを引き起こすが、それは、要求の呼び出し元にJSONを返しません。

どのようにすればこの問題を解決できますか?

+0

あなたのリクエストに 'サブスクライブする 'ようにして、それに' map'を使うのではなく 'doSomething(res)'を呼んでいますか? – poke

答えて

0

あなたMyHttpクラス内の要求に何かをしたい場合は、私が代わりに対応する観測可能に加入するのdo演算子を使用します:あなたのケースでは

class MyHttp extends Http { 
    request(url,...) { 
    (...) 
    return super.request(url).do(res=> doSomething(res)); 
    } 
} 

を、request方法は戻りません。観察可能であるが、subscribeメソッドの呼び出しに対応するサブスクリプションオブジェクト。 rxjsドキュメントから

は、観察可能なシーケンスの各要素に対してアクションを呼び出し、観察可能なシーケンスの優雅または例外終了時にアクションを呼び出します。

このメソッドは、パイプライン上のメッセージに対して任意のアクションを実行するためにメッセージストリームを傍受することによって、クエリの動作のデバッグ、ロギングなどに使用できます。

実行順序については、私は正確にMyJwtHttpの実装を知らないが、mapオペレータがMyHttpMyJwtHttpクラス外で使用されている場合、それに関連するコールバックは、応答オブジェクトではなくJSONコンテンツを受信する必要があります。

関連する問題