Alamofire Async Await

简介: Alamofire Async Await

正常使用 URLSession 是能够支持 Await 写法的。例子如下:结合task就不用在每层的外部增加 async 关键字了。

Task {
    let request = try URLRequest.init(url: "https://xxxxxxxx", method: .get)
    let (data, response) = try await URLSession.shared.data(for: request)
    let res = try JSONSerialization.jsonObject(with: data)
    print("res is \(res)")
}

但是当使用Alamofire的时候就不能这么用了,需要转换一下方式。这种算是非结构话请求。

// 使用了 SwiftyJSON
// import SwiftyJSON
func get() async throws -> JSON {
    try await withUnsafeThrowingContinuation({ continuation in
        AF.request("https://xxxxxx").responseJSON { response in
            switch response.result {
            case .success(let value):
                continuation.resume(returning: JSON(value))
            case.failure(let error):
                continuation.resume(throwing: error)
            }
        }
    })
}

Task {
    let handle = Task {
        return try await self.get()
    }
    let result = try await handle.value
    print("res is \(result.stringValue)")
}

这样改造一下就能使 Alamofire 也支持 async await 了。看起来非常像 javascript 的promise 的改造方式。

相关文章
|
3月前
|
前端开发 JavaScript
什么是 async、await ?
什么是 async、await ?
|
9月前
|
JSON 前端开发 JavaScript
async/await的应用
async/await的应用
45 0
|
11月前
|
前端开发 JavaScript
|
3月前
|
前端开发 JavaScript 开发者
阿珊带你深入理解 async/await 函数
阿珊带你深入理解 async/await 函数
|
1天前
|
前端开发
async、await
async、await
|
3月前
|
前端开发 JavaScript
async/await
async/await
25 0
|
3月前
|
JSON 前端开发 JavaScript
什么是async和await?
什么是async和await?
30 0
|
3月前
|
前端开发 JavaScript
处理异步请求的 async/await 和 promise
处理异步请求的 async/await 和 promise
|
3月前
|
前端开发 JavaScript
|
12月前
|
前端开发 API
Async/Await 在何时该使用,何时不使用
使用 async/await 是在处理异步操作时的一种更简洁、易读的方式,它基于 Promise,并且可以使异步代码看起来像同步代码一样编写。然而,并不是所有情况下都需要使用 async/await。
162 0