Я ищу хороший шаблон, с которым я могу связать несколько HTTP-запросов. Я хочу использовать Swift, и желательно Alamofire.Цепочки множественных запросов Alamofire
Скажем, к примеру, я хочу сделать следующее:
- Сделать запрос PUT
- сделать запрос GET
- Reload таблица с данными
Кажется, что концепция promises может быть хорошей подгонкой для этого. PromiseKit может быть хорошим вариантом, если бы я мог сделать что-то вроде этого:
NSURLConnection.promise(
Alamofire.request(
Router.Put(url: "http://httbin.org/put")
)
).then { (request, response, data, error) in
Alamofire.request(
Router.Get(url: "http://httbin.org/get")
)
}.then { (request, response, data, error) in
// Process data
}.then {() ->() in
// Reload table
}
, но это не возможно, или, по крайней мере, я не знаю об этом.
Как я могу достичь этой функциональности, не вставляя несколько методов?
Я новичок в iOS, поэтому, возможно, есть нечто более фундаментальное, что мне не хватает. То, что я сделал в других рамках, таких как Android, - это выполнить эти операции в фоновом режиме и сделать запросы синхронными. Но Alamofire is inherently asynchronous, так что шаблон не является вариантом.
Я не использовал PromiseKit, но альтернативы можно было бы использовать AFNetworking-х [ 'AFHTTPRequestOperation'] (HTTP://cocoadocs.org/docsets/AFNetworking/2.4.1/Classes/AFHTTPRequestOperation.html), который вы можете добавить в 'NSOperationQueue'. Вы можете установить, чтобы операции запускались только по завершении других операций. –
Вы должны иметь возможность использовать 'PromiseKit', хотя вам придется предоставить свою собственную поддержку, очевидный путь будет в качестве расширения для« AlamoFire.request »Checkout, что они сделали для« NSURLConnection », и использовать это в качестве модели. –
Вы можете использовать ReactiveCocoa вместо PromiseKit. ReactiveCocoa можно рассматривать как надмножество PromiseKit, поскольку он обеспечивает гораздо большую функциональность, может использоваться во многих других местах, упрощает структуру кода и многое другое – gkaimakas