Asyncify 🔄

.package(url: "https://github.com/mesqueeb/Asyncify", from: "0.0.9")

Asyncify 是一个实用工具类,旨在将基于回调的异步方法转换为 Swift 的 async/await 模式。

这个类对于适配现有的、使用回调函数/完成处理程序的异步代码,使其能够使用 Swift 中较新的 async/await 语法非常有用,从而简化了代码库中的并发管理。

用法

假设你有一个函数使用完成处理程序来传递其结果,从而执行异步操作。 你可以使用 Asyncify 来包装这个函数,并使用 Swift 的 async/await 语法来调用它。

示例

// Example asynchronous function using a completion handler
func fetchUserDataWithHandler(completion: @escaping (Result<UserData, Error>) -> Void) {
    // ... your function implementation
}

// Set up an instance of Asyncify to use in the new async function
let asyncify = Asyncify<UserData>()

// Create a new async function using the `asyncify` instance
func fetchUserData() async throws -> UserData {
    try await asyncify.performOperation { completion in
        fetchUserDataWithHandler(completion: completion)
    }
}

// Usage
Task {
    do {
        let userData = try await fetchUserData()
        print("Fetched user data: \(userData)")
    } catch {
        print("Failed to fetch user data: \(error)")
    }
}

此示例演示了如何使用 Asyncify 将传统的基于回调的函数 (fetchUserData) 适配成现代的 async/await 模式 (getUserDataAsync),使其更易于在 Swift 的并发模型中使用。

文档

查看 文档 以获取更多信息。