Как отправить одновременный запрос с Alamofire? - PullRequest
0 голосов
/ 29 апреля 2020

Hai Я использую «Alamofire» для отправки почтовых запросов. Сначала я отправляю Balance запрос и отправляю setAppStatus запрос. Я использую одну функцию для обработки ответов. Прежде чем я получу ответы на Balance, отправляется SetAppStatus. Я использую reqName для обработки ответов.

if reqName=="getBalance"
    {
       \\ handling Api responses
    }
    if reqName=="setAppStatus"
    {
       \\ handling Api responses
    }

С вышеприведенным кодом я отправляю запрос Balance и получаю ответ. Но когда я печатаю reqName, это setAppStatus. Это переопределяет. Как я могу это исправить?

1 Ответ

0 голосов
/ 29 апреля 2020

Вам нужно будет реорганизовать это так, чтобы вы не использовали одно общее свойство родительского класса, чтобы выяснить, какой из двух одновременных запросов вы обрабатываете. Это просто не сработает. В итоге удалите это свойство reqName.

Существует две очевидные альтернативы:

  1. Одно из решений - просто дать этим двум запросам два отдельных метода-обработчика завершения. Я знаю, что, вероятно, вы чувствуете, что вы сохраняете это простым, имея один метод, но если у вас есть большие if - else блоки, скрытые в этом общем методе обработки ответов, это хороший признак того, что вы должны рассмотреть возможность его разбить.

  2. Если вы решили использовать единый метод обработки ответов, а не полагаться на какое-либо свойство, совместно используемое обоими двумя одновременными запросами, вместо этого вы захотите взглянуть на объект, который методы ответа Alamofire передают своим соответствующим замыканиям. Внутри этого объекта есть свойство request, из которого вы можете определить, какой из двух ответов вы обрабатываете (например, просматриваете URL-адрес запроса). Или захватите некоторый параметр, который вы использовали при подготовке запроса в методе обработки ответа.

Первый вариант, вероятно, лучший: он поддерживает ваши методы как можно более простыми, каждый из которых несет единственную ответственность, т.е. для разбора конкретного ответа.

...