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 的改造方式。

相关文章
|
Web App开发 搜索推荐 Android开发
AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接
AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接
2178 0
|
网络协议 Unix 应用服务中间件
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
如何使Nginx轻松实现10万并发访问量。通常来说,一个正常的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,如果Nginx服务器经过优化的话,则可以稳定地达到 904,000 次/秒 的处理性能,大大提高Nginx的并发访问量。
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
|
缓存 监控 持续交付
|
Android开发 Kotlin
kotlin开发安卓app,如何让布局自适应系统传统导航和全面屏导航
使用`navigationBarsPadding()`修饰符实现界面自适应,自动处理底部导航栏的内边距,再加上`.padding(bottom = 10.dp)`设定内容与屏幕底部的距离,以完成全面的布局适配。示例代码采用Kotlin。
398 15
|
存储 前端开发 JavaScript
|
前端开发 UED
React Suspense 大揭秘!异步加载与优雅降级的神奇黑科技,让你的 React 应用更出色!
【8月更文挑战第31天】React Suspense 是 React 提供的一种处理异步数据加载和优雅降级的特性。它通过 `React.lazy` 和 `Suspense` 组件实现异步加载,在加载过程中显示提示信息,并通过错误边界组件 `Error Boundary` 捕获错误,避免应用崩溃,从而提升用户体验。
411 0
|
存储 ice 索引
经验大分享:PJSUA2开发文档
经验大分享:PJSUA2开发文档
707 0
|
IDE Java 开发工具
【Android 从入门到出门】第一章:Android开发技能入门指南
【Android 从入门到出门】第一章:Android开发技能入门指南
427 3
|
开发者 iOS开发
no identity found Command CodeSign failed with a nonzero exit code
no identity found Command CodeSign failed with a nonzero exit code
704 0
|
小程序 Python
分享41个微信小程序源码,总有一款适合您
分享41个微信小程序源码,总有一款适合您
925 2