1

I'm trying to make a delay of less than a second. I found this code from the web. It doesn't however accept delays of less than a second. The Grand Dispatch Concept in Swift is a bit of a mystery to me. How should I modify this code to create a delay of 0.3 seconds?

    let deadlineTime = DispatchTime.now() + .seconds(1) //how to get 0.3 seconds here
    DispatchQueue.main.asyncAfter(deadline: deadlineTime) {        
      //code here
    }
user594883
  • 1,329
  • 2
  • 17
  • 36

4 Answers4

6

Well, that's quite easy, don't use seconds, use milliseconds:

let deadlineTime = DispatchTime.now() + .milliseconds(300) // 0.3 seconds 
Andreas Oetjen
  • 9,889
  • 1
  • 24
  • 34
3

just add your reqired time to DispatchTime.now() and you will get a result

let deadlineTime = DispatchTime.now() + 0.3 //Here is 0.3 second as per your requirement 
    DispatchQueue.main.asyncAfter(deadline: deadlineTime) {        
      //code here
    }
Maulik Pandya
  • 2,200
  • 17
  • 26
0
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { 
     // your method after delay
}

Remember, this will execute on main thread. If you want otherwise, check DispatchQueue.global(qos:) or this reference

x4h1d
  • 6,042
  • 1
  • 31
  • 46
-1

use this, will work

let delay = 2.5 * Double(NSEC_PER_SEC) 
let time = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC)  

DispatchQueue.main.asyncAfter(deadline: time, execute: {
     self.view_Alert.alpha = 0 
})
x4h1d
  • 6,042
  • 1
  • 31
  • 46
Akhilesh Sharma
  • 104
  • 1
  • 8