gpt4 book ai didi

swift - 如何在调度 block 中获取返回值?

转载 作者:搜寻专家 更新时间:2023-10-31 21:54:29 25 4
gpt4 key购买 nike

如何从异步调度 block 中获取返回值?

我想出了这个示例代码:

if let url = URL(string: "https://google.com/") {
let data: Data? = ***SOME_ASYNC_AWAIT_DISPATCH_GROUP<T>*** { return try? Data(contentsOf: url) }
print("Downloaded Data: \(data)")
}

目标:在这里,我希望异步调用产生一个结果并将其存储到 data 常量中,以便我可以使用它。

最佳答案

我很简单地使用完成方法来做到这一点。测试函数在后台线程从 url 下载数据,下载完成 block 运行后,它返回下载的数据,它可以在任何格式中将其转换为您的格式。

func UpdateUI(){

test { (data) in
//data is value return by test function
DispatchQueue.main.async {
// Update UI
//do task what you want.
// run on the main queue, after the previous code in outer block
}
}
}

func test (returnCompletion: @escaping (AnyObject) -> () ){

let url = URL(string: "https://google.com/")
DispatchQueue.global(qos: .background).async {
// Background work
let data = try? Data(contentsOf: url!)
// convert the data in you formate. here i am using anyobject.
returnCompletion(data as AnyObject)
}
}

希望对你有所帮助。

关于swift - 如何在调度 block 中获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com