首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速同步函数等待异步函数完成

快速同步函数等待异步函数完成
EN

Stack Overflow用户
提问于 2022-10-03 02:16:42
回答 2查看 126关注 0票数 -3

在视图控制器中,用户可以选择图像,然后应用程序上传到服务器。

用户可以一次选择多幅图像,也可以多次选择。

上传的每一张图片都会返回一个URL供以后下载。

有一个提交按钮,以保存其他信息和上传图像到服务器的网址。

我想当用户按下提交按钮时,应用程序将等待所有上传的图片(返回URL或抛出错误)。

我使用等待任务组在每次用户选择图像时并行上传图像。

除了使用sleep()之外,还有其他方法等待上传任务完成吗?

更新:

我上传图片的代码:

代码语言:javascript
运行
复制
let urls = try await upload(images: images, urls: urls)

func upload(images: [UIImage], urls: [String]) async throws -> [String] {
    try await withThrowingTaskGroup(of: String.self, returning: [String].self) { group in
        for (index, image) in images.enumerated() {
            group.addTask { [self] in
                guard let url = try? await upload(image: image, to: urls[index]) else {
                    return ""
                }
                return url
            }
        }
        
        var downloadURLs = [String]()
        
        for try await result in group {
            if result != "" {
                downloadURLs.append(result)
            }
        }
        
        return downloadURLs
    }
}

上传图像和提交数据是两个不同的操作:

automatically.

  • User
  • 用户选择图片后,该应用程序将其上传后,可以随时点击提交按钮,即使是在上传图片时,应用程序也必须等待上传任务完成后才能提交其他数据。
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73930593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档