2017-02-14 4 views
5

Я хочу сделать несколько вызовов http в Angular2 с помощью наблюдаемых. Каждый наблюдаемый зависит от предыдущего наблюдаемого. Если я хочу вернуть внутреннее наблюдаемое, поэтому я могу подписаться на него в родительском компоненте), как это можно сделать?Angular2 Return Inner Observable of Nested Observables

Вот что я пробовал, но я не смог подписаться на наблюдаемый в родительском компоненте.

Детский компонент:

observablesFn(){ 
    observable1().subscribe(data1 => { 
     observable2().subcribe(data2 => { 
      //I want to return this observable (before subscription b/c I want to subscribe in the parent component) 
      return observable3(); 
     }) 
    } 
} 

ответ

7

Ваш вопрос трудно понять, так как вы не дали много контекста, но это звучит, как вы хотите, чтобы получить результат observable3() вернуться из observablesFn(). Существующий оператор return возвращается из вашей вложенной внутренней анонимной функции, а не из вашей внешней области. Я думаю, вы хотите сделать что-то еще в этом направлении.

observablesFn(){ 
    return observable1().map(data1 => { 
    return observable2(data1).map(data2 => { 
     return observable3(data1, data2); 
    }); 
    }); 
} 

Это будет возвращать из observablesFn(), а не его вложенной внутренней функции.

Необходимо использовать .map, а не .subscribe, так как он возвращает наблюдаемую, а не подписку.