Angular加载拦截器导致MachineComponent内forkJoin执行异常
Angular组件运行异常问题
异常表现
- 仅在访问MachineComponent时触发运行异常:移除自定义加载器逻辑后,相关组件可正常运行
- 组件初始化阶段通过
forkJoin并发调用2个后端接口,接入加载器后该段forkJoin逻辑无法正常执行,移除加载器后组件功能完全恢复 - 所有渲染于MasterComponent下的其余子组件,接入加载器后均运行正常
现有相关实现
- MasterComponent为页面全局框架组件,通过
router-outlet渲染子组件,全局挂载<app-loading>加载组件,结合LoaderService的BehaviorSubject控制加载态显隐 - MachineComponent在ngOnInit中通过
forkJoin并发调用MachineService的getServer接口、OpenStackService的getFlavors接口,搭配takeWhile做生命周期解绑控制,获取接口返回值后赋值给组件本地属性 - 自定义
LoaderInterceptor实现HttpInterceptor接口,拦截所有HTTP请求,维护请求队列,在请求发起、结束时更新LoaderService的isLoading状态以控制加载组件显隐 - LoaderService为全局单例服务,通过
BehaviorSubject存储全局加载态状态
运行时现象
项目触发异常时,前端控制台会输出对应报错信息。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

