ios - 终止前一个后调用下一个函数
问题描述
在 func getJsonData结束后,我需要调用 func fillFields。
func getJsonData 是一个异步任务,用于在服务器上为 URLRequest 获取数据。
func getAPIData() {
let initial = URL(string: "http://10.0.0.2/Blower/app/api/inicial.php")
DispatchQueue.main.async {
_ = URLSession.shared.dataTask(with: initial!) { (dados, requisicao, erro) in
if requisicao != nil {}
if let dados = dados {
do {
let json = try JSONSerialization.jsonObject(with: dados, options: []) as! [String: Any]
/*
*
*/
} catch {
print(erro as Any)
}
}
}.resume()
}
}
如何知道函数 getAPIData 是否完成?
解决方案
当任务像这样完成时,您可以使用完成处理程序进行识别。
func getAPIData(complition:@escaping (AnyObject?, Error?) -> Void) {
let initial = URL(string: "http://10.0.0.2/Blower/app/api/inicial.php")
DispatchQueue.main.async {
_ = URLSession.shared.dataTask(with: initial!) { (dados, requisicao, erro) in
if requisicao != nil {}
if let dados = dados {
do {
let json = try JSONSerialization.jsonObject(with: dados, options: []) as! [String: Any]
complition(json as AnyObject, nil) // When Complete task
// Call next function Here
} catch {
print(erro as Any)
complition(nil, erro)
}
} else {
complition(nil, erro)
}
}.resume()
}
}
像这样打电话
self.getAPIData { (response,error) in
print(response) // Your response is here after complete task
}
推荐阅读
- r - 将数千个 PRISM .bil 数据文件转换为 .csv
- html - 下载属性不适用于 Chrome
- c++ - 如何使 Qt5.13.1 中的 QSerialPort 工作?
- visual-studio - 如何在 Visual Studio Xamarin.IOS 项目的情节提要的详细视图控制器中的按钮后面添加代码?
- python-3.x - 基于来自另一个数据框的多列创建新列
- c# - How to use get/set properties from one class to another
- java - 如何实现一个需要超过 15 个参数的方法
- automationanywhere - Automation Anywhere 的后端语言是什么?我们在哪里以及如何查看机器人的逐行脚本?
- python - 熊猫数据透视表到数据框
- php - PHP - 在 twilio 中回复传入的短信时,如何将源号码存储在文件中?