【问题标题】:Download Firebase Storage Synchronously同步下载 Firebase 存储
【发布时间】:2017-05-05 14:00:37
【问题描述】:

我正在从 Firebase Storage 下载图像并将其显示在表格视图中。我一直在用这个:

referenceOfImage.data(withMaxSize: 100 * 1024 * 1024) { data, error in
    if let error = error {
        print(error)
    } else {
        guard let data = data else {
            print("no data")
            return
        }
        guard let image = UIImage(data: data) else {
            print("no image")
            return
        }
        //use image

    }
}

但是,根据文档,任务

将 FIRStorageReference 处的对象异步下载到内存中的 NSData 对象。

我目前正在使用循环下载多个图像,如果我可以同步下载图像会更好(否则循环将继续并且任务将不完整)。如何同步下载图像?谢谢!

【问题讨论】:

    标签: ios swift firebase synchronization firebase-storage


    【解决方案1】:

    你不能。这些方法是异步的,因为它们需要服务器调用,并且使它们同步会阻塞主线程并导致非常糟糕的用户体验和性能。也许你可以设置完成调用来做一些递归?

    将图像加载粘贴到一个函数中,该函数接受一个要获取的数组、当前索引和一个在完成时调用的选择器。有一个终止条件 (index == array.count),它调用您希望在加载所有图像时发生的选择器,否则在索引处获取图像,并在完成处理程序中,递增索引并获取下一个图像调用相同的方法。

    【讨论】:

    • 我使用改造,每个服务器调用都是从 IO 线程进行的,所以这可以同步完成,而 UI 线程没有问题。关键是使用没有回调的直接编程风格
    • 是的,出于同样的原因,我正在寻找同步调用。 Kotlin 协程。
    • 递归调用从 Firebase 存储下载文件的函数是一种好方法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 2021-02-13
    • 1970-01-01
    • 2018-02-19
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多