October 24, 2020

How to add a delay to code in Swift

How to add a delay to code in Swift

In this tutorial you will learn how to add a delay to your code. To add a delay to your code we need to use GCD.

GCD has a built in method called asyncAfter, which will allow us to run code after a given amount of time.

The code is extremely simple:

print("Before delay")

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    print("Async after 2 seconds")
}

In the above code, Before delay will be printed out first and after 2 seconds, Async after 2 seconds will be printed.

There is a way to make the above code easier to read in my opinion. Instead of using 2 we can use .seconds(2). By default asyncAfter uses seconds, so for the above example it might not be the best use case, however, if you wanted microseconds or milliseconds this will help.

Below is an example with milliseconds:

print("Before delay")

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) {
    print("async after 500 milliseconds")
}

Conclusion

Adding a delay to code is easy with Swift but I wish that they would make it so that one wouldn't have to go through DispatchQueue.main. Having said that, this is not something that should be used super often in most situations, and if you did need it often, you would just creation this function yourself.

You can find the full source code here.