J'ai 2 points de terminaison API; ce dernier dépend du résultat du premier.Chaînage de requêtes Alamofire avec Swift et PromiseKit
Le premier point d'extrémité est /api/v1/regions/
, qui renvoie une liste de région JSON comme si
{
region_id: 1,
mayor_id: 9
},
{
region_id: 1,
mayor_id: 10
},
Le deuxième point d'extrémité est /api/v1/mayor/<id>/
, qui renvoie un JSON sur le maire. Mon flux de travail est actuellement de faire le premier appel API pour obtenir toutes les régions, puis je veux faire un tas d'appels API au point de terminaison /mayor/
en fonction des ID que je reçois à partir du premier point de fin. Donc, dans cet exemple, je voudrais faire 2 autres appels:
/api/v1/mayor/9/
/api/v1/mayor/10/
je l'ai déjà mis en place 2 fonctions pour faire de chaque appel d'API et a obtenu avec succès le retour JSON pour chacun.
func fetchRegions() -> Promise<[Region]> {
}
func fetchMayor(id: String) -> Promise<Mayor> {
}
Maintenant, je voudrais voir comment je pouvais chaîne tout cela ensemble. C'est ce que j'ai jusqu'à présent:
var fetchedRegions: [Region] = []
firstly {
fetchRegions()
}.then { regions in
fetchedRegions = regions
}.then {
for r in fetchedRegions {
self.fetchMayor(id: r.mayor_id).then { mayor in
print(mayor)
}.catch { error in
}
}
}.catch { error in // Error: Missing return in a closure expected to return 'AnyPromise'
print(error)
}