//DispatchTime.now() 获取当前时间
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
//需要进行的操作
}
- 异步进行耗时操作,主线程进行用户交互以及刷新UI的操作
//开启一个全局的异步队列
DispatchQueue.global().async {
//耗时操作
DispatchQueue.main.async {
//进行UI刷新和用户交互
}
}
- 处理多数据请求,所有请求完毕进行UI更新(数据进行并发请求)
//创建调度器
let workingGroup = DispatchGroup()
//创建队列
let workingQueue = DispatchQueue(label: "request_data")
//第一个网络请求
workingGroup.enter()
workingQueue.async {
//进行数据请求1
workingGroup.leave()
}
//第二个网络请求
workingGroup.enter()
workingQueue.async {
//进行数据请求2
workingGroup.leave()
}
//请求完毕
workingGroup.notify(queue: .main) {
//进行UI的更新
}
PS:数据请求返回时是异步回调,用普通的请求你可以确保它的调用顺,但无法确保它的返回结果的回调顺序
网友评论