2016-11-28 4 views
3

Я использую Moya для обработки HTTP-операций, и обычно у меня есть refreshToken(). Я проверяю токен, если истек, или нет, когда возникает запрос, но проблема в том, что могут быть сценарии, которые запрашивают более одного запроса. Если они связаны цепями с вложенными типами, это не проблема, но это вряд ли все время.Сделать все конечные точки подождать одну точную конечную точку

Чтобы быть более ясным, позволяет сказать, что у меня есть request1() и request2() и предположим, что они выполняют отдельные операции и могут быть вызваны в любое время (например, один называется в viewDidLoad(), другой называется в другом viewDidLoad()). когда это произойдет, и если токен истек, мой запрос обновления не выполняется. (statusCode: 400) Итак, мой вопрос: как я могу заставить провайдера ждать refresh() операция выполняется? Я имею в виду, что провайдер - это другие конечные точки. Я хочу, чтобы они подождали refresh() конечной точки, если он включен.

Буду очень признателен, если вы предложите способ, который облегчит это.

+0

Каждый раз, когда вы вызываете запрос, вы хотите проверить, не истечет ли токен обновления. Если это так, вы получаете токен обновления через службу и затем делаете запрос. Чтобы быть уверенным, это именно то, что вы ищете правильно? Если это так, мы можем сделать это с помощью закрытий и глобального (bool) значения для токена обновления. – KrishnaCA

+0

. Я уже проверяю, истек ли токен обновления или нет, перед каждым запросом. Но поскольку мой менеджер сетевых операций является асинхронным, иногда через два раза выполняется два разных запроса, и они отдельно делают запрос на обновление токена. В результате я получаю 400 от второго. Я просто ищу решение для этого. – Faruk

ответ

0

Я только что установил переменную под названием isTokenRefreshing true, когда я запустил операцию refresh() и проверил ее перед тем, как сделать запрос. Если это правда, я сохранил все запросы в массиве и, когда закончил refresh(), я выполнил другую функцию, которая в основном делает все сохраненные запросы в for loop.

Если кто-то хочет увидеть код, который я могу предоставить. Просто дай мне знать.

Смежные вопросы