在Swift开发中,处理异步任务通常使用以下几种方法:
func fetchData(completion: @escaping (Result<Data, Error>) -> Void) {
// 异步任务
DispatchQueue.global().async {
// 模拟网络请求
sleep(2)
let data = Data()
let error: Error? = nil
// 任务完成,调用回调
DispatchQueue.main.async {
completion(Result(data, error))
}
}
}
fetchData { result in
switch result {
case .success(let data):
print("数据:\(data)")
case .failure(let error):
print("错误:\(error)")
}
}
import PromiseKit
func fetchData() -> Promise<Data> {
return Promise<Data> { fulfill, reject in
DispatchQueue.global().async {
sleep(2)
let data = Data()
let error: Error? = nil
if let error = error {
reject(error)
} else {
fulfill(data)
}
}
}
}
fetchData().then { data in
print("数据:\(data)")
}.catch { error in
print("错误:\(error)")
}
func fetchData() async -> Result<Data, Error> {
return withCheckedThrowingContinuation { continuation in
DispatchQueue.global().async {
sleep(2)
let data = Data()
let error: Error? = nil
if let error = error {
continuation.resume(throwing: error)
} else {
continuation.resume(returning: data)
}
}
}
}
Task {
do {
let data = try await fetchData()
print("数据:\(data)")
} catch {
print("错误:\(error)")
}
}
这些方法都可以用于处理异步任务,你可以根据项目需求和个人喜好选择合适的方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。