我有一个简单的拦截器,可以处理请求并使用RXJS catchError捕获任何http错误。在catchError中收到的第二个参数是捕获的可观察值。在某些情况下,我想返回此错误,并使其传播到订阅函数中的错误处理程序。问题是返回捕获的错误会导致无限循环(如示例中所示:https : //stackblitz.com/edit/angular-u4gakr)
接收HTTP错误(例如404)时,catchError陷入循环的拦截器中的拦截函数:
return next.handle(request)
.pipe(
catchError((error, caught$) => {
console.log('Returning caught observable');
return caught$;
})
);
Run Code Online (Sandbox Code Playgroud)
我可能误解了有关拦截器或RxJS catchError的某些信息。有什么建议吗?
使用带有自定义声明的 firestore 在线安全模拟会导致错误,但它在部署时可以完美运行(同时实际处理真实请求)。错误是:
错误:simulator.rules 行 [5],列 [23]。属性 admin 在对象上未定义。
我已经确认用户实际上拥有声明(通过管理 SDK 并使用我添加规则的应用程序)。
match /{document=**} {
allow write: if request.auth.token.admin;
allow read;
}
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?模拟器坏了还是我遗漏了什么?无法使用模拟器会很困难,因为我希望在我的应用程序中使用一些自定义声明。
我遇到了一个奇怪的问题.当我尝试编写一个返回指向子类的指针的函数时,我交换了该子类的不同实例,我得到"错误C2106:'=':左操作数必须是l值"错误.
问题在于one->getMe() = two;:
class subClass{};
class someClass{
public:
subClass * pointer;
someClass(){
pointer = new subClass;
}
subClass * getMe(){
return pointer;
}
};
int main(){
someClass * one = new someClass;
subClass * two = new subClass;
one->getMe() = two;
}
Run Code Online (Sandbox Code Playgroud)
我对c ++有点新意,所以问题可能很简单.任何帮助深表感谢.