赶上从BehaviorSubject错误由异步管签约时,我有一个rxjs BehaviorSubject
我同意使用async
管从角2,我有一个catch
来处理它抛出最后的错误。 问题是,每当我得到一个错误,它就会启动一个无限循环,因为我的catch返回从BehaviorSubject
派生的Observable,我认为当我返回catch
时,async
管道重新订阅了可观察值。无限循环对角2
代码看起来大致是这样的:
ListService - 是@Injectable
在那里我有BehaviorSubject并与Observable
财产。
private listSubject: BehaviorSubject<IItem[]>;
public get listObservable() {
return this.listSubject.asObservable()
}
private error(error: IError) {
this.listSubject.error(error);
}
ListComponent - 是@Component
显示列表中观察到。你可以看到,我的catch返回当前可观察对象,因为它必须返回一个可观察对象。所以,发生什么是,当我发送this.listSubject.error(error)
代码进入一个无限循环无限期调用catch
,因为,就像我之前说过的,我认为BehaviourSubject
重新抛出错误,因为async
管道重新订阅可观察的catch
返回它。
我试图在错误中返回以前的缓存阵列以返回Observable.of(error.cached)
,但我得到了一组全新的问题,因为认为异步没有订阅BehaviorSubject
了。
就像我之前说的,这是我真实代码的粗略表示,但逻辑基本上是这样。
我一直在尝试各种不同的方法,但我无法设法得到这个无限循环停下来。
在此先感谢您的帮助。
抛出错误的类型是什么,以及在错误的情况下,您希望代码执行什么操作? – KwintenP
任何错误,我在List服务中使用该错误函数传递错误,即使我只传递一个字符串,我也会遇到问题。但通常我传递api响应错误。 –