Swift 等待完成,然后执行下一步
我有几个过程需要在加载TableView时按顺序完成。我希望它会等到代码完成后再执行下一行代码,但情况似乎并非如此。在执行下一步之前,是否有办法让这些操作等待完成Swift 等待完成,然后执行下一步,swift,Swift,我有几个过程需要在加载TableView时按顺序完成。我希望它会等到代码完成后再执行下一行代码,但情况似乎并非如此。在执行下一步之前,是否有办法让这些操作等待完成 override func viewDidLoad() { super.viewDidLoad() performTask1() performTask2() performTask3() } 谢谢你的帮助 使这些方法中的每一个都采用completionHandler参数的典型示例,例如: func perform1(
override func viewDidLoad() {
super.viewDidLoad()
performTask1()
performTask2()
performTask3()
}
谢谢你的帮助 使这些方法中的每一个都采用
completionHandler
参数的典型示例,例如:
func perform1(completionHandler: () -> Void) {
doSomethingAsynchronously() {
completionHandler()
}
}
func perform2(completionHandler: () -> Void) {
doSomethingElseAsynchronously() {
completionHandler()
}
}
func perform3(completionHandler: () -> Void) {
doSomethingCompletelyDifferentAsynchronously() {
completionHandler()
}
}
然后您可以这样运行它们:
override func viewDidLoad() {
super.viewDidLoad()
perform1 {
self.perform2 {
self.perform3 {
}
}
}
}
它确实会等待,除非这些任务中的任何一个分派要在后台执行的代码块,否则您是否正在执行类似的操作?是的,有一种方法可以做到这一点(通过阻塞主线程)。但是不,你不想那样做。只要在流程完成后重新加载/显示您的表视图就行了。是的,我正在进行“FindObjectInBackground”分析。因此,如果它是背景中的某个内容,它将启动该功能,然后将其返回到原始功能?每个过程都相互依赖。我想我可以在上一个流程的末尾启动下一个流程,但这对我来说似乎并不干净。谢谢大家的帮助。我将努力创建完成处理程序。谢谢,@Rob。这看起来很有趣,我已经尝试过测试它,但是在Xcode 7.3,Swift 2.2中,我得到了错误
“传递给不带参数的调用的参数”
。有没有关于如何解决这个问题的建议?错误图像:@user4806509-您的doSomethingAsynchronously
,doSomethingElseAsynchronously
,以及dosomethingcomplelydifferentitysynchronously
方法没有完成处理程序。为他们提供异步任务完成时调用的完成处理程序闭包(就像您为perform1
、perform2
和perform3
所做的那样)。瞧,非常感谢,罗伯。