2017-02-18 8 views
1

Я простирающимся класс, который уже есть метод, который возвращает Observable, , как показано ниже, я хочу, чтобы вернуть базу наблюдаемой после результата первого наблюдаемым возвращаются (после получения token из другой службы),Как вернуть наблюдаемом, когда другие наблюдаемым делаются

поэтому я разработать коды, как ниже, но машинописный компилятор не принимает, потому что я не возвращался Observeable<Response>, он будет возвращен в subscribe метод

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> { 
    this.tokenService.getToken().subscribe(token => { 
     //injecting token into options 
     return super.post(url, body, options); 
    }); 

} 

Кроме того, я попытался создать пе ж Observable, как показано ниже, но до сих пор нет никаких шансов

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> { 
    return new Observable<Response>(observer => { 
     this.tokenService.getToken().subscribe(token => { 
      //injecting token into options 
      //observer.complete??? super.post(url, body, options); 
     }); 

    }); 
    } 

ответ

4

Использования flatMap для преобразования одной наблюдаемой в другом наблюдаемом:

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> { 
    return this.tokenService.getToken().flatMap(token => { 
     //injecting token into options 
     return super.post(url, body, options); 
    }); 
} 
+0

Тем не менее я получаю ошибку компиляции, потому что ничего не возвращается 'Функции, объявленный тип не является ни 'void' или 'any' должен возвращать значение. – RezaRahmati

+0

Извините, что я забыл, что вы «возвращаете» flatMapped наблюдаемый. Я исправил этот пример. – Brandon

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

  • Нет связанных вопросов^_^