【发布时间】:2019-05-29 21:01:10
【问题描述】:
我有一个使用 Alamofire 发出多个 HTTP 请求的函数。我想等待所有这些都完成以返回一个值。但是,它卡在 dispatch.wait()
class func getActionField(fieldid: String, completion: @escaping (_ res: [String: [Double]]) -> Void) {
var resreturn: [String: [Double]] = ["temperature":[], "humidity":[], "ph":[], "light":[]]
let dispatch = DispatchGroup()
dispatch.enter()
Alamofire.request(url + "aktionsdaten/temperatur/" + fieldid, method: .get).responseJSON{ response in
resreturn["temperature"] = response.result.value as! NSArray as? [Double] ?? [0.0,0.0]
dispatch.leave()
}
dispatch.enter()
Alamofire.request(url + "aktionsdaten/light/" + fieldid, method: .get).responseJSON{ response in
resreturn["light"] = response.result.value as! NSArray as? [Double] ?? [0.0,0.0]
dispatch.leave()
}
dispatch.enter()
Alamofire.request(url + "aktionsdaten/ph/" + fieldid, method: .get).responseJSON{ response in
resreturn["ph"] = response.result.value as! NSArray as? [Double] ?? [0.0,0.0]
dispatch.leave()
}
dispatch.enter()
Alamofire.request(url + "aktionsdaten/feuchtigkeit/" + fieldid, method: .get).responseJSON{ response in
resreturn["humidity"] = response.result.value as! NSArray as? [Double] ?? [0.0,0.0]
dispatch.leave()
}
dispatch.wait()
completion(resreturn)
}
【问题讨论】:
标签: ios swift grand-central-dispatch