我有2個API端點;後者取決於第一個的結果。使用Swift和PromiseKit鏈接Alamofire請求
的第一端點是/api/v1/regions/
,它返回像這樣
{
region_id: 1,
mayor_id: 9
},
{
region_id: 1,
mayor_id: 10
},
區域JSON的列表中的第二端點是/api/v1/mayor/<id>/
,它返回一個關於市長JSON。我現在的工作流程是進行第一次API調用以獲得所有區域,然後我想根據從第一個端點獲得的ID對/mayor/
端點進行一堆API調用。因此,在這個例子中,我想打2個電話:
/api/v1/mayor/9/
/api/v1/mayor/10/
我已經設置了2個功能,使每個API調用,並順利拿到了回JSON每個。
func fetchRegions() -> Promise<[Region]> {
}
func fetchMayor(id: String) -> Promise<Mayor> {
}
現在我想看看如何將所有這些鏈接在一起。這是我到目前爲止:
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)
}