1

如果用户被服务器注销并且客户端仍然认为用户已登录,我将按401预期收到错误代码。但是,在提示用户输入凭据并重新登录后,我希望暂时“保存”并重试失败的请求。为此,我认为这retrywhen会很棒,但是当与我一起使用时,timeout我开始遇到问题. 如果任何请求花费的时间超过 10 秒,我希望在我的客户端上出现超时错误,但是如果请求失败并显示401状态并提示用户输入凭据,我希望不会因为超时而出现该可观察到的错误。

我尝试创建和使用具有 replaySubject 的自定义服务,以便我可以修改超时并使用 switchmap 将当前订阅的 base observable 与更改后的超时值交换,但这并不特定于单个请求,因为它是服务/单例性质,并将重播所有请求。(我确信采用这个方向还有其他问题。

我在stackblitz上有一个超级精简的示例,其中我的“等待用户输入”被替换为延迟,以模拟用户花费的时间比设置的 rxjs 超时时间长。

我希望在用户成功登录后我应该能够重试失败的 httpRequest 而不会超时并且不会将任何内容保存到外部状态

4

0 回答 0