我想检索客户下的所有订单。 所以,在我的组件中,我写的如下。
ngOnInit() {
this.customerId = this.getCustomer();
this.orderHistoryItems = this.getOrders();
}
getCustomer(): string {
this._accountService.getCustomer()
.subscribe((response) => {
if (response.GeneralStatus.toString() === 'Success') {
return response.Result.CustomerId;
}
});
return "";
}
getOrders(): OrderHistory[] {
this._trackOrdersService.getOrders(this.customerId)
.subscribe((response) => {
if (response.GeneralStatus.toString() === 'Success') {
return response.Result;
}
});
return [];
}
当我调用此内容时,我第一次将customerId设为undefined
。如果上述subscribe
方法中的getCustomer()
条件中的条件,则控件甚至无法输入。
如果我重新加载同一页面,那么我也会获得customerId和订单。我已经为getCustomer
和getOrders
编写了相应的http来电,如下所示。
getOrders(custId) {
return this._http.get(`${this.apiUrl}GetOrders?CustomerID=${custId}`, { headers: this.headers })
.retry(2)
.map(function (res) {
return res.json();
});
}
getCustomer(): Observable<ApiResponse<Customer, string>> {
return this._http.get('${this.apiUrl}LoggedInCustomer', { headers: this.headers })
.retry(2)
.map((response) => response.json())
.catch(this.handleError);
}
如果上述代码有任何错误,请帮助我。
答案 0 :(得分:0)
我认为您试图在subscribe
调用中返回结果,这将无效,因为您使用的是内联函数。
一种方法是再次返回Observable
或传递这样的回调:
ngOnInit() {
this.getCustomer((id) => {
this.customerId = id;
});
this.getOrders((orderItems) => {
this.orderHistoryItems = orderItems;
});
}
getCustomer(callback: (id) => void) {
this._accountService.getCustomer()
.subscribe((response) => {
if (response.GeneralStatus.toString() === 'Success') {
callback(response.Result.CustomerId);
}
});
}
getOrders(callback: (orderItmes: OrderHistory[]) => void) {
this._trackOrdersService.getOrders(this.customerId)
.subscribe((response) => {
if (response.GeneralStatus.toString() === 'Success') {
callback(response.Result);
}
});
}