DelayedJob 1.0.1

DelayedJob 1.0.1

James Pamplona 维护。



  • James Pamplona

DelayedJob

在稍后运行一个任务。如果已有任务已调度,则后续对该任务的请求将导致已调度任务被取消或新运行被忽略。可以根据配置来设置对最近或最早的安排任务的优先级。

用途

这很有用,例如,当您想要在用户键入时发起网络请求,但只在不必要地触发过多网络请求的情况下,即用户停止键入至少一秒钟时。

let networkRequest = DelayedJob(prioritize: .later) { networkFetcher.sendRequest(searchText) }

func editingDidChange(sender: UITextField) {
    searchText = sender.text
    networkRequest.run(withDelay: 1)
}

使用 .later 优先级,如果在实际运行之前请求运行,则先前安排的运行将被取消,并重新安排新的运行。这样,只有在用户停止键入超过一秒钟时,网络请求才会实际运行。

安装

CocoaPods

将其添加到您的 Podfile

target 'MyApp' do 
    use_frameworks! # Remove this line to use as a static framework
    
    pod 'DelayedJob'
end

并运行 pod install

Swift 包管理器

通过 swift package

将这个仓库添加到您的 Package.swift 依赖中

.package(url: "https://github.com/toastersocks/DelayedJob", from: "1.0.0"),

并将 Delayed Job 作为您目标的依赖项添加

.target(
    name: "MyTarget",
    dependencies: ["DelayedJob"]),
.testTarget(
    name: "MyTargetTests",
    dependencies: ["MyTarget"]),

所有内容汇总在一起

// swift-tools-version:5.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MyExecutableOrLibrary",
    platforms: [.macOS(.v10_12), .iOS(.v10), .tvOS(.v10), .watchOS(.v3)], // <-- for Apple platforms, add at least one platform. For non-Apple platforms, this isn't necessary.
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        .package(url: "https://github.com/toastersocks/DelayedJob", from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "MyTarget",
            dependencies: ["DelayedJob"]),
        .testTarget(
            name: "MyTargetTests",
            dependencies: ["MyTarget"]),
    ]
)

通过 Xcode

如果使用的是 Xcode 11 或更高版本,您可以在 Xcode 中使用 Swift 包管理器集成。

  • 选择您的 .xcproject 文件
  • 选择 PROJECT 下的项目
  • 选择 Swift Package
  • 点击 + 符号
  • 将此仓库地址复制到文本框中并点击 Next
  • 在下一屏幕上选择您的版本/分支
  • 选择您的目标并点击 完成
  • 哇 💥

Carthage

将它添加到您的 Cartfile

github "toastersocks/DelayedJob" ~> "1.0.0"

并按照此处说明操作: https://github.com/Carthage/Carthage#adding-frameworks-to-an-application

测试

如果您在非 Linux 平台,并希望测试 Linux 和/或 Linux on ARM,则 bin 文件夹中有两个文件可以通过 Docker 运行测试。
要运行它们两个,使它们可执行,然后从项目根目录运行

./bin/*Test.sh

(arm6 (Raspberry Pi Zero 和 Original Pi) 测试目前未能通过)