Тут есть одна трабла.
Допустим токен устарел
- Посылаем запрос1
- посылаем запрос2
- Приходит ответ на запрос1, что токен сдох
запускаем обновление
- Приходит ответ на запрос 2, что токен сдох
(и вот тут мы не должны запускать обновление! мы просто должны ждать, пока не придет новый токен) и потом повторять запрос 2 уже с ним)
Т.е в процедуре обновления выставляем флаг inRefresh = true. И снимаем его когда пришел токен.
А когда на запрос получаем ответ, что токен устарел, то проверяем этот флаг. Если установлен, значит его уже обновляют. И мы не запускаем обновление, а просто повторяем запрос - там уже есть ожидание обновления токена.
|