Метод subscribe
возвращает Subscriber
. Это имеет смысл правильно? Все Observable
и JS по своей природе в основном асин c. Вы извлекаете данные asyn c, вам нужно как-то дождаться их и использовать обратный вызов для продолжения с возвращенными данными. См. здесь для основного потока об этом.
В вашем случае это будет означать, что вам придется использовать что-то для создания цепочки Observables
. Хорошо, что есть куча операторов, мы должны их использовать. В этом случае лучшим оператором будет mergeMap
или concatMap
. Однако мне неясно, зачем вам нужно имя клиента, поскольку вы не передаете его в API клиента get. Тем не менее, это решает ваш запрос?
getCustomerOrders(customerName: string): Observable<CustomerOrder[]> {
return this.getCurrentCustomer(customerName).pipe(
// here you have your customer object, but what do you want to do with it?
mergeMap((customer) => this.http.get<CustomerOrder[]>(this.customerOrdersUrl))
);
}
getCurrentCustomer(name: string): Observable<Customer> {
const url = this.customerNameUrl;
return this.http.get<Customer>(url).pipe(
tap(_ => this.log(`fetched customer name=${name}`, 'success')),
catchError(this.handleError<Customer>(`getCustomer name=${name}`))
);
}