2016-03-23 28 views
0

bittikten sonra response.json() yanıtı Http açısal sınıfını genişleten bir sınıfa sahip olalım, buna MyHttp diyelim. Ayrıca MyHttp sınıfını genişleten MyJwtHttp sınıf var. angular2: Tüm abone sayısı

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

ve request yöntemin uygulanmasını geçerli::

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

Sorunun böyle bir şey yapıyorsam olmasıdır json olarak tepkisini dönmek isterler

Burada sorun, MyHttp sınıfının abonesi olmadan map işlevinin çağrılmasıdır. Bu yerine map ait last kullanılarak denedi

.. doSomething(res) giriş bir json değil tepki kendisi olmasına neden olur ama bu isteğin arayana json döndürmez.

Bu sorunun nasıl çözüleceği hakkında bir fikriniz var mı? Eğer MyHttp sınıf içindeki istekle bir şeyler yapmak istiyorsanız

+0

İsteğinize 'abone' olmak istediğinizden emin misiniz ve üzerinde 'map' kullanmak yerine 'doSomething (res) 'işlevini çağırmak ister misiniz? – poke

cevap

0

, bunun yerine ilgili gözlemlenebilir üzerinde abone do operatörünü kullanırsınız:

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

, request yöntem dönmez subscribe yönteminin çağrısına karşılık gelen bir gözlemlenebilir ancak bir abonelik nesnesi. rxjs belgelerine

:

gözlemlenebilir sırayla her bir eleman için bir işlem çağırır ve gözlemlenebilir dizisinin zarif veya istisnai sona erdiğinde bir işlem başlatır.

Bu yöntem, ileti akışını, boru hattındaki iletiler için isteğe bağlı eylemleri çalıştırmak üzere arayarak sorgulamada hata ayıklama, günlüğe kaydetme, vb. Için kullanılabilir. yürütme amacıyla İlişkin

, tam olarak MyJwtHttp uygulanmasını bilmiyorum ama map operatör MyHttp ve MyJwtHttp sınıfları dışında kullanılması halinde, bunun ilgili çağrı bir yanıt nesnesi değil JSON içeriği almalıdır.