版权所有 2018-2019 KKBOX Technologies Limited
以 Promise 的方式使用 KKBOX 的 Swift SDK。
本项目通过采用 Google 的 Promises 库扩展了 KKBOX 的 Open API Swift SDK。它提供了一种进行异步 API 调用的替代方法。
目前只能使用 Swift Package Manager 安装此扩展。请将以下内容添加到
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "YourTargetName",
products: [
.executable(name: "YourTargetName", targets: ["YourTargetName"])
],
dependencies: [
.package(url: "https://github.com/KKBOX/OpenAPI-Swift-Promises", .upToNextMinor(from: "1.0.0"))
],
targets: [
.target(name: "YourTargetName", dependencies: ["KKBOXOpenAPISwift"], path: "./Path/To/Your/Sources")
]
)
您的 Package.swift
文件中。然后在命令行下运行 swift package update
。
在使用 KKBOX 的 Open API Swift SDK 时,您可能会编写像这样的嵌套回调处理代码
_ = try? self.API.fetchAccessTokenByClientCredential { result in
switch result {
case .error(let error):
print("\(error.localizedDescription)")
case .success(_):
_ = try? self.API.fetch(track: "4kxvr3wPWkaL9_y3o_") { result in
switch result {
case .error(let error):
print("\(error.localizedDescription)")
case .success(let track):
print("\(track)")
}
}
}
}
Promises 解决了回调地狱。添加此扩展后,您可以将上面的代码写成这样
self.API.fetchAccessTokenByClientCredential().then { _ in
return self.API.fetch(track: "4kxvr3wPWkaL9_y3o_")
} .then { track in
print("\(track)")
} .catch { error in
print("\(error.localizedDescription)")
}
版权所有 2018-2019 KKBOX Technologies Limited
根据 Apache License,版本 2.0(“许可证”)获得许可;除非遵守许可证的规定,否则您不得使用此文件。您可以在以下位置获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据“按原样”的基础分发的软件不附带任何形式的担保或条件,无论是明示的还是暗示的。请参阅许可证以了解有关权限和限制的特定语言。