Wait for completion before completing the next step.

I have several processes that must be completed in order to load my TableView. I would expect it to wait until the code completes before the next line of code is executed, but it doesn't seem to be that way. Is there a way to wait for the completion before the next step?

override func viewDidLoad() {
    super.viewDidLoad()

performTask1()

performTask2()

performTask3()
}

Thanks for the help!

+4
source share
1 answer

A typical example for each of these methods takes a parameter completionHandler, for example:

func perform1(completionHandler: () -> Void) {
    doSomethingAsynchronously() {
        completionHandler()
    }
}

func perform2(completionHandler: () -> Void) {
    doSomethingElseAsynchronously() {
        completionHandler()
    }
}

func perform3(completionHandler: () -> Void) {
    doSomethingCompletelyDifferentAsynchronously() {
        completionHandler()
    }
}

Then you can run them like this:

override func viewDidLoad() {
    super.viewDidLoad()

    perform1 {
        self.perform2 {
            self.perform3 {

            }
        }
    }
}
+4
source

All Articles