如何向 DispatchQueue 添加时间延迟变量

How to Add a Time Delay Variable to DispatchQueue

首先我使用 arc4random

创建了一个 randomDelay 值

然后我想将 randomDelay 值添加到 DispatchQueue 以创建一个随机时间延迟变量

这是我的代码:

func animation1() {

UIView.animate(withDuration: 1, animations: {

    // various code

}, completion: { (true) in

    //delay calling the function by the randomDelay value of '0' to '2' seconds
    let randomDelay = arc4random_uniform(3)
    DispatchQueue.main.asyncAfter(deadline: .now() + randomDelay) { // the randomDelay value throws an unresolved identifier 'randomDelay' error
        self.showAnimation2() // Go to the next function
    }
  })
}

谢谢

我想这对你有帮助!

let aRandomVar = 2   // change 2 to desired number of seconds
 let when = DispatchTime.now() + Double(aRandomVar)
    DispatchQueue.main.asyncAfter(deadline: when) {
       // Your code with delay
    }

您需要将 randomDelay 转换为 Double。然后你使用它如下:

let randomDelay = arc4random_uniform(3)
DispatchQueue.main.asyncAfter(deadline: .now() + Double(randomDelay)) {
}

你没说随机数是什么时间单位,建议你select一个单位。例如秒数:

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(Int(randomDelay)), execute: {...})

或毫秒:

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(randomDelay)), execute: {...})