ios - 在异步方法数之后执行代码
问题描述
假设我有一些类实例的 Int 数组和数组
var IDs = [Int]()
var items = [Item]()
对于 IDs 数组中的每个项目,我想运行异步函数以从服务器请求项目
for id in IDs {
let item = requestItem(id)
items.append(item)
}
由于 requestItem 以异步方式工作 - 如何仅在加载所有项目后执行代码?
解决方案
func requestItem(id: Int, completion: @escaping (Item) -> ()) {
DispatchQueue.global(qos: .background).async {
let item = Item()
completion(item)
}
}
var IDs = [Int]()
var items = [Item]()
for id in IDs {
requestItem(id: id) { (derivedItem) in
items.append(derivedItem)
}
}
推荐阅读
- python - 如何将以某个值开头的字符串分隔到单独的列中?
- react-native - 参数未定义不是路由反应本机中的对象
- azure - 如何使用 Azure Cosmos DB Spark 仅将不存在的记录写入 Cosmos DB?
- python - 当我在 python 上使用 timediff 时发生错误
- c# - ASP.NET Core MVC 视图中的 Razor Pages 路由问题
- batch-file - Windows批处理文件的颜色输出,在vscode片段中
- javascript - Vue:如何在表单提交时将用户的注意力吸引到空字段:是否需要 if-else?
- javascript - 在浏览器上呈现页面时检测并防止更改链接
- node.js - 如何调试 docker restart 未在 node.js 应用程序中重新启动?
- kotlin - 如何为 Kotlin 中扩展函数抛出的异常提供自定义异常消息?