javascript - 如何将观察者变量作为参数传递?
问题描述
applicationObs
该组件具有作为观察者的变量:
export class OrderDetailsComponent implements OnInit {
public applicationObs: Observable<ApplicationResponse>;
public getSections(): SidebarMenuItem[] {
const fabricApplicationSidebar = fabricApplicationSidebarMenu(this.application); // Here
}
}
如何传递applicationObs
到fabricApplicationSidebarMenu()
何时this.application
不是观察者,而是ApplicationResponse
。
如何在函数中将异步数据作为变量传递?
解决方案
我建议您对此有所不同,您真正想要做的是在您的可观察管道上添加一个新功能。所以我会做这样的事情:
export class OrderDetailsComponent implements OnInit {
public applicationObs: Observable<ApplicationResponse>;
public getSections(): Observable<SidebarMenuItem[]> {
return applicationObs.pipe(
map(m => fabricApplicationSidebarMenu(m))
);
}
}
这里是在现有的 observable 上添加一个新管道并返回它。这仍然是异步的,所以它本身并没有做任何事情。要获取这些部分,您仍然需要订阅生成的 observable:
this.getSections().subscribe((s: SidebarMenuItem[]) => {
});
如果您愿意,您也可以使用async
管道。看这里
请注意,上面将触发 applicationObs以及订阅时所做的任何事情fabricApplicationSidebarMenu
。这可能是可取的,也可能不是可取的,具体取决于您的计划以及这些功能的作用。
推荐阅读
- orm - Sequelize.js 模型关联
- uwsgi - uwsgi 环境变量
- installation - 测试 Inno Setup 安装程序是否以管理员权限运行
- javascript - 如何评估 IE11 中的有效日期字符串
- jquery-select2 - 我是否错误地使用了 select2?接收 JQuery 引用错误
- r - 如何去除时间序列中的特定谐波?
- python - 如何让精灵在撞到墙壁后停止加速?
- ansible - ansible 仅用其字典值替换列表项
- visual-studio-code - 无法连接到 tsserver
- python - Python想要增加一个数组元素,它增加同一列的所有数组元素