Swift:Activity 带有异步 Web 任务的指示器
Swift: Activity Indicator with Async Web tasks
晚上我有以下问题:
问题
我的应用程序是一个基于网络的应用程序。它从 API 下载数据,您可以通过不同的 tableViews
.
显示结果
加载 LandingPage 后,应用开始下载数据。通过许多异步任务下载数据。
我希望用户不能使用该应用程序,直到数据全部下载完毕,显示activity indicator
。
我想在页面加载后立即显示 activity 指示器,而不是在调用异步 closure 时停止它。
问题是像 5 个异步函数,每个异步任务都使其他异步任务。
那么有没有办法了解是否有异步任务运行,如果有:显示指标,如果没有:停止指标?
或者,有更好的设计模式来完成这个吗?
因为你有很多异步,你应该使用 promise 工具包:
有了它,您可以管理所有请求,甚至可以对每个请求执行不同的错误处理,并随时显示或隐藏加载指示器。
解决方案
@rmaddy 建议我使用 GroupDispatch
首先,我创建了一个 GroupDispatch 对象。
对于每个异步调用,我都将 groupDispatch
对象作为 parameter
传递,并且在函数内部我使用了 group.enter()
,因此每次调用该函数时进入组内。
在闭包中我使用了 group.leave()
方法。
最后,我使用 group.notify
在所有异步调用完成时收到通知。
完美运行!
晚上我有以下问题:
问题
我的应用程序是一个基于网络的应用程序。它从 API 下载数据,您可以通过不同的 tableViews
.
加载 LandingPage 后,应用开始下载数据。通过许多异步任务下载数据。
我希望用户不能使用该应用程序,直到数据全部下载完毕,显示activity indicator
。
我想在页面加载后立即显示 activity 指示器,而不是在调用异步 closure 时停止它。
问题是像 5 个异步函数,每个异步任务都使其他异步任务。
那么有没有办法了解是否有异步任务运行,如果有:显示指标,如果没有:停止指标?
或者,有更好的设计模式来完成这个吗?
因为你有很多异步,你应该使用 promise 工具包:
有了它,您可以管理所有请求,甚至可以对每个请求执行不同的错误处理,并随时显示或隐藏加载指示器。
解决方案
@rmaddy 建议我使用 GroupDispatch
首先,我创建了一个 GroupDispatch 对象。
对于每个异步调用,我都将 groupDispatch
对象作为 parameter
传递,并且在函数内部我使用了 group.enter()
,因此每次调用该函数时进入组内。
在闭包中我使用了 group.leave()
方法。
最后,我使用 group.notify
在所有异步调用完成时收到通知。
完美运行!