Fly 1.0.1

Fly 1.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2016年2月
SPM支持 SPM

airin 维护。



Fly 1.0.1

  • 作者
  • Airin

Fly

Fly 受 Async 启发。

功能

  • 链式闭包的执行控制(下一个、取消、完成、错误、回退、重试、重启)。
  • 可以选择 GCD(Grand Central Dispatch)的执行队列。
  • 将对象传递到下一个队列。
  • 代码缩进更少。

示例

基本操作

Fly.onFirst { result in
    // called first
    // called at main thread queue

    print("Basics onFirst")
    print(result)
    let count = (result as! Int)
    return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Background) { result in
        // called second
        // called at background qos class thread queue

        print("Basics onNext1")
        print(result)
        let count = (result as! Int)
        return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Default) { result in
        // called third
        // called at default qos class thread queue

        print("Basics onNext2")
        print(result)
        if (result as! Int) > 10 {
            // call complete closure
            return FlyResult.Finish(result: result)
        } else {
            // call cancel closure
            return FlyResult.Cancel
        }
    }.onCancel(GCD.Utility) {
        // called fourth
        // called at utility qos class thread queue

        print("Basics cancel")
    }.onComplete { result in
        // called last
        // called at main thread queue

        print("Basics completion")
        print(result)
    }.fly(0)
}

重试

Fly.onFirst { result in
    // called first

    print("Retry onFirst")
    print(result)
    let count = (result as! Int)
    return FlyResult.Next(result: conut)
    }.onNext(GCD.Default) { result in
        // called second

        print("Retry onNext")
        print(result)
        let count = (result as! Int)
        if count > 10 {
            // call complete
            return FlyResult.Finish(result: conut)
        } else {
            // call this closure
            return FlyResult.Retry(result: count + 1)
        }
    }.onComplete(GCD.Background) { result in
        // called last

        print("Retry completion")
        print(result)
    }.fly(0)

回退

Fly.onFirst { result in
    // called first

    print("Back onFirst")
    print(result)
    let count = (result as! Int)
    return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Background) { result in
        // called second

        print("Back onNext1")
        print(result)
        let count = (result as! Int)
        return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Default) { result in
        // called third

        print("Back onNext2")
        print(result)
        if (result as! Int) > 10 {
            // call complete closure
            return FlyResult.Finish(result: result)
        } else {
            // call previous closure
            return FlyResult.Back(result: result)
        }
    }.onComplete(GCD.Background) { result in
        // called last

        print("Back completion")
        print(result)
    }.fly(0)
}

重启

Fly.onFirst { result in
    // called first

    print("Restart onFirst")
    print(result)
    let count = (result as! Int)
    return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Background) { result in
        // called second

        print("Restart onNext1")
        print(result)
        let count = (result as! Int)
        return FlyResult.Next(result: count + 1)
    }.onNext(GCD.Default) { result in
        // called third

        print("Restart onNext2")
        print(result)
        if (result as! Int) > 10 {
            // call complete closure
            return FlyResult.Finish(result: result)
        } else {
            // call first closure
            return FlyResult.Restart(result: result)
        }
    }.onComplete(GCD.Background) { result in
        // called last

        print("Restart completion")
        print(result)
    }.fly(0)

要求

  • Xcode 7.1+
  • iOS 8.0+
  • Swift 2.1+

安装

许可证

MIT 许可证。有关更多信息,请参阅 LICENSE 文件。