2017-02-14 11 views
5

Chcę wykonać wiele połączeń http w Angular2 za pomocą obserwowalnych. Każdy obserwowalny jest zależny od uprzedniego obserwowalnego. Jeśli chcę zwrócić wewnętrzną obserwowalność, abym mógł zasubskrybować ją w komponencie macierzystym), jak to zrobić?Angular2 Return Wewnętrzna obserwacja zagnieżdżonych obserwatorów

Oto, co próbowałem, ale nie byłem w stanie zasubskrybować tego, co można zaobserwować w komponencie macierzystym.

Komponent dziecka:

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(); 
     }) 
    } 
} 

Odpowiedz

7

Twoje pytanie jest trudne do zrozumienia, ponieważ nie dały dużo kontekst, ale to brzmi jak szukasz, aby uzyskać wynik observable3() powrotu z observablesFn(). Istniejąca instrukcja return powraca z zagnieżdżonej wewnętrznej anonimowej funkcji, a nie z twojego zewnętrznego zasięgu. Myślę, że chcesz zrobić coś więcej w tym kierunku.

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

ten powraca z observablesFn() zamiast swojej osadzonej funkcji wewnętrznej.

Należy użyć .map zamiast .subscribe, ponieważ zwraca on raczej obserwowalną niż subskrypcję.

Powiązane problemy