我有我的angular 4应用程序,它一次又一次向受OAuth2保护的API发送多个请求,当请求失败并显示401状态代码时,我遇到了问题,我需要生成一个新的访问令牌然后向API重新发起相同的请求,并将响应返回给正在等待的方法。
1-所有请求都一次失败-因此,为了保留其他要继续的请求,我添加了一个循环,当令牌生成过程中,该循环保存进入服务器的请求
2-为了启动请求,我在代码块中再次添加了行next.handle(request)
,但没有用,然后我尝试调用this.intercept(request,next)
方法,即使它没有用,之后我添加的最后一个方法是重新在错误块中处理该请求,因此现在拦截方法的代码如下所示,但随后我意识到即使我重试处理该请求,该请求甚至都无法得到进一步处理。有几个教程只是建议next.handle(request)
,但就我而言,它不能按预期工作。
只有我能成功处理失败请求之后的请求,因为直到那时为止,都会生成新的访问令牌,但是失败的请求只会丢失。
请查看link中的代码流!
我已经花了很多时间进行调试
答案 0 :(得分:0)
我能够通过在拦截方法中添加Observable.fromPromise
然后调用一个返回promise的方法来实现此目的,然后递归调用该方法,直到获得刷新令牌为止,但是在每次调用之间增加了延迟这样我就不会多次递归调用。
请参考此link以获取我的代码。 如有任何问题,请发表评论。