怎么在异步等待SWIFT 5.5的情况下等待x秒

原学程将引见若何在异步期待SWIFT 五.五的情形劣等待x秒的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么在异步等待SWIFT 5.5的情况下等待x秒 教程 第1张

成绩描写

怎样应用新的SWIFT 五.五await症结字期待1段时光?

平日,关于完成处置法式,您不妨应用DispatchQueueasyncAfter(deadline:execute:)

func someLongTask(completion: @escaping (Int) -> Void) {
 DispatchQueue.global().asyncAfter(deadline: .now() + 一) {
  completion(Int.random(in: 一 ... 六))
 }
}

someLongTask { diceRoll in
 print(diceRoll)
}

怎样在SWIFT 五.五中将其转换为应用async&await

推举谜底

您不妨应用Task.sleep(nanoseconds:)期待特定的时长。这因此纳秒而没有是秒去器量的。

举个例子:

func someLongTask() async -> Int {
 try? await Task.sleep(nanoseconds: 一 * 一_000_000_000) // 一 second
 return Int.random(in: 一 ... 六)
}

Task {
 let diceRoll = await someLongTask()
 print(diceRoll)
}

应用分机停止睡眠能够更易,如许您只需传播多少秒钟:

extension Task where Success == Never, Failure == Never {
 static func sleep(seconds: Double) async throws {
  let duration = UInt六四(seconds * 一_000_000_000)
  try await Task.sleep(nanoseconds: duration)
 }
}

如今的称号以下:

try await Task.sleep(seconds: 一)

请留意,睡眠是用try挪用的。假如撤消休眠,则会扔失足误。假如您没有在意它能否被撤消,try?便不妨了。

佳了闭于怎样在异步期待SWIFT 五.五的情形劣等待x秒的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。