javascript - 订阅前如何正确映射数据?
问题描述
我有以下功能:
this.localStorage.getItem('user').subscribe(user => {
this.user = user;
this.authSrv.getOrders(this.user.einsender).pipe(map(orders => {
map(order => { order["etz"] = "23"; return order})
return orders;
})).subscribe(orders => {
this.orders = orders;
this.completeOrders = orders;
console.log(orders);
this.waitUntilContentLoaded = true;
})
})
没有地图的结果是:
[{id: 1, etz: "21"}]
使用上面的地图,我尝试输入数组,然后按顺序和顺序我尝试更改etz
属性,但不知何故没有任何变化。有人可以看一下吗?我很感激任何帮助!
解决方案
我在这里看到了多个问题。
尽量避免嵌套订阅。相反,您可以使用 RxJS 高阶映射运算符之一,例如
switchMap
. 您可以在此处和此处找到不同的高阶映射运算符。您可以使用 JS扩展运算符来调整对象的某些属性并保留其他属性。
尝试以下
this.localStorage.getItem('user').pipe(
switchMap(user => {
this.user = user;
return this.authSrv.getOrders(this.user.einsender).pipe(
map(orders => orders.map(order => ({...order, order['etz']: '23'})))
});
})
).subscribe(
orders => {
this.orders = orders;
this.completeOrders = orders;
console.log(orders);
this.waitUntilContentLoaded = true;
},
error => {
// good practice to handle HTTP errors
}
);
推荐阅读
- groovy - Jira 与 groovy 连接上的状态 403
- git - 带有 CMS 的 Git:当我卸载插件时,如何在 Git 中轻松反映这一点?
- azure - 上传 azurerm_storage_blob 时出现问题,因为 azurerm_storage_container 存在
- powershell - 对 var2 的更改也会更改 var1 派生自 var1
- r - 如何在牛图顶部添加文本栏?
- reactjs - 如何在流配置中包含来自忽略的 node_modules 的路径
- android - react-native android bundle release 无法在某些设备上运行
- laravel - 如何清除 laravel 未定义变量错误
- php - 带有 PHP Api CORS 请求问题的 Angular4 应用程序
- python - ModuleNotFoundError:Django 中没有名为“posts”的模块