swift-timeout 是一个轻量级的封装库,它围绕着 Task
,并在给定的超时时间内执行闭包。
Timeout
可以通过 Swift Package Manager 进行安装。
注意: Timeout
需要 Swift 5.10 版本,并且 Xcode 版本需要在 15.4 或更高版本。它可以在 iOS 13+、tvOS 13+、macOS 10.15+、Linux 和 Windows 上运行。要使用 Swift Package Manager 进行安装,请将它添加到你的 Package.swift
文件的 dependencies:
部分。
.package(url: "https://github.com/swhitty/swift-timeout.git", .upToNextMajor(from: "0.2.0"))
你需要提供一个闭包和一个 Instant
,用于设定子任务的超时时间。 如果子任务未在指定时间内完成,则会抛出 TimeoutError
错误。
import Timeout
let val = try await withThrowingTimeout(after: .now + .seconds(2)) {
try await perform()
}
你也可以提供 TimeInterval
。
let val = try await withThrowingTimeout(seconds: 2.0) {
try await perform()
}
注意:当超时到期时,执行闭包的任务会被取消,并抛出
TimeoutError
错误。
Timeout
的主要工作由 Simon Whitty 完成。
(完整贡献者列表)