gpt4 book ai didi

swift - 如何在 swift 中包含多个函数的完成处理程序?

转载 作者:行者123 更新时间:2023-11-28 12:07:15 25 4
gpt4 key购买 nike

考虑这段代码:

func test() {
A()
B()
C()
D()
E()
}

这里的每个函数都有自己的一组操作,如调用 API、解析它们、将结果写入文件、上传到服务器等。

我想一个一个地运行这个函数。我阅读了有关完成处理程序的信息。我的完成处理程序问题是:

  • 为理解完成处理程序而给出的所有示例都只有两种方法
  • 我不想将此功能放在其他功能中。我想要 Test() 函数内的所有函数调用(A 到 E)

有人可以帮忙吗?

最佳答案

这很容易做到,你只需要添加一个闭包参数来调用完成。例如:

func a(completion: (() -> Void)) {
// When all async operations are complete:
completion()
}

func b(completion: (() -> Void)) {
// When all async operations are complete:
completion()
}

func c(completion: (() -> Void)) {
// When all async operations are complete:
completion()
}

func d(completion: (() -> Void)) {
// When all async operations are complete:
completion()
}

func e(completion: (() -> Void)) {
// When all async operations are complete:
completion()
}

func test() {
a {
b {
c {
d {
e {
// All have now completed.
}
}
}
}
}
}

如您所见,这看起来很糟糕。多个非并发异步操作的一个问题是您最终会遇到这种可怕的嵌套。

这个问题确实存在解决方案,我个人推荐PromiseKit .它将 block 封装在简单的链接方法中,这要干净得多。

关于swift - 如何在 swift 中包含多个函数的完成处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com