Dag*_*gle 5 observable rxjs angular
我正在执行 get 请求以检索用户角色
private myOrders;
constructor(private userData: UserDataService) {
this.userData.getUser().subscribe((user: any) => {
//and then I'm doing a conditional get
if (user.role == "Admin") {
this.userData.getAdminOrders().subscribe((adminOrders: any) => {
this.myOrders = adminOrders
});
} else {
this.myOrders = user.orders
}
});
Run Code Online (Sandbox Code Playgroud)
我的应用程序仅正确显示 user.orders (普通客户的订单),但是当我使用管理员帐户时,它只显示第一页加载,但随后它们就消失了。
我如何管理这些嵌套订阅?(它们是我的 userDataService 上的 http.get)
在这种类型的情况下,您应该使用rxjs运算符之一。
对于这种情况,我推荐您flatMap:
private myOrders;
constructor(private userData: UserDataService) {
this.userData.getUser().pipe(flatMap(user: any) => {
if (user.role == "Admin") {
return this.userData.getAdminOrders();
} else {
return of(user.orders)
}
}).suscribe((result) => {
this.myOrders = result
}
);
Run Code Online (Sandbox Code Playgroud)
如果user.role == "Admin"
为 true,result
则将是 HTTP 请求的结果this.userData.getAdminOrders()
。在另一种情况下,结果将是user.orders
。
归档时间: |
|
查看次数: |
11507 次 |
最近记录: |