Мне нужно асинхронно выполнить запрос к http-серверу и обработать ответ.Запрос действительно - довольно большая цепочка вызовов методов с обратными вызовами .Это добавляет сложности, поскольку в цепочке вызовов существует множество путей возврата.
Не должно быть возможности начать новый запрос, пока текущий запрос не будет полностью завершен.
Вот общая схема:
- Некоторые вызовы потоков
[Foo poll]
. - Метод
poll
запускает пару HTTP-запросов, которые выполняются в фоновом режиме.В этом случае ASIHTTPRequest. - Запросы в конечном итоге вызывают
[Foo onRequestComplete]
, который анализирует ответ.При ошибке [Foo onRequestError
] вызывается.Это второй путь возврата. - Затем на сервер выполняется больше вызовов с обратными вызовами и дополнительными путями возврата.
- В конечном итоге некоторые вещи сохраняются на диск.
- Опросзавершено
Вот подвох: во время этих шагов вызовы poll
должны игнорироваться (возвращаться) или блокироваться до завершения опроса.
Как можноВы уверены, что функциональные блоки poll
или no-ops во время другого опроса?