如何在完成另一个功能后执行另一个功能
Posted
技术标签:
【中文标题】如何在完成另一个功能后执行另一个功能【英文标题】:How to execute one function after completion of another 【发布时间】:2020-11-25 21:06:16 【问题描述】:我一直在尝试在login()
完成后执行getData()
,但是在使用DispatchQueue.main.async
时似乎永远不会工作
我只能通过强制延迟来使其工作,最好的方法是什么? 谢谢
class DataTask
func login...
func getData...
struct ContentView: View
@State private var data = DataTask()
var body: some View
Text("Hello world")
.onAppear
data.login()
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0)
func refreshData()
data.getData()
// update the response into core data
【问题讨论】:
最简单的方法是在 login() 函数的末尾调用 getData()。 【参考方案1】:永远不要使用硬编码的延迟来解决异步任务,这是一种可怕的做法。
要执行一个函数在另一个函数完成后添加一个完成处理程序
class DataTask
func login(completion: @escaping: () -> Void) ... completion() ...
func getData ...
...
data.login
data.getData()
【讨论】:
以上是关于如何在完成另一个功能后执行另一个功能的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个请求中等待,直到另一个请求完成 nodeJS 中相同功能的执行