2016-03-23 2 views
0

У меня есть класс, который расширяет угловой класс Http, назовем его MyHttp. У меня также есть класс MyJwtHttp, который распространяется на класс MyHttp.angular2: Observerable <Response> response.json() ведь все подписчики выполнены

Я хочу, чтобы иметь возможность вернуть ответ как JSON проблема заключается в том, что, если я делаю что-то вроде этого:

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

и реализацию метода request является:

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

Проблема заключается в том, что функция map вызывается перед абонентом класса MyHttp. Это приводит к тому, вход doSomething(res) быть JSON, а не сам ответ ..

Я попытался с помощью last вместо map, но он не будет возвращать JSON к вызывающему запроса.

Любая идея, как решить эту проблему?

+0

Вы действительно хотите «подписаться» на свой запрос и называть 'doSomething (res)' вместо того, чтобы использовать 'map' на нем? – poke

ответ

0

Если вы хотите сделать что-то с просьбой в вашем MyHttp классе, я хотел бы использовать оператор do вместо подписавшись на соответствующие наблюдаемым:

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

В вашем случае метод request не возвращается наблюдаемый, но объект подписки, соответствующий вызову метода subscribe.

Из документации rxjs:

Запускает действие для каждого элемента в наблюдаемой последовательности и вызывает в действие на изящном или исключительное прекращение наблюдаемой последовательности.

Этот метод может использоваться для отладки, ведения журнала и т. Д. Поведения запроса путем перехвата потока сообщений для запуска произвольных действий для сообщений в конвейере.

Что касается порядка исполнения, я не знаю точно, осуществление MyJwtHttp, но если оператор map используется вне MyHttp и MyJwtHttp классов, связанный с ним обратный вызов должен получить объект ответа, а не содержание JSON.

Смежные вопросы