|
在多个请求响应时间不同的情况下,可能会出现重复刷新 token 。
例如,A 请求响应时间 100ms ,B 请求响应时间 300ms 。
A 请求响应 token 过期,在 100ms 内完成: isRefreshing = true , 执行 refresh 流程,isRefreshing = false 。
此时才过去 200ms 。
再过 100ms 后,B 请求响应 token 过期,发现 isRefreshing = false ,再次执行 refresh 。
试试双重检查:
1. 如果是 JWT ,先检查本地 token 是否过期
2. 如果服务器响应 token 无效
3. 再检查一次本地 token 是否与上次相同,不相同说明刷新过了,相同就执行 refresh |