Fab*_*eri 5 promise ios swift promisekit thenable
我发现在一个看似简单的情况下使用 PromiseKit 6.13.1 非常困难。我有以下两个返回 a 的函数,Promise<String>但我似乎无法找到一种使用 ```firstly{}.then{} 语法来使用它们的方法:
func promiseGetJWTToken() -> Promise<String> {
return Promise<String> { seal in
let error: Error = NSError(domain: "", code: 2000)
getJWTToken { tokenJWT in
guard let tokenJWT = tokenJWT else {
seal.resolve(.rejected(error))
return
}
seal.resolve(.fulfilled(tokenJWT))
}
}
}
func promiseGetBEToken() -> Promise<String> {
return Promise<String> { seal in
let error: Error = NSError(domain: "", code: 2000)
getBEToken { result in
switch result {
case .success(let response):
guard let tokenBE = response.token else {
seal.resolve(.rejected(error))
return
}
seal.fulfill(tokenBE)
case .failure(let error):
debugPrint(error)
seal.resolve(.rejected(error))
case .none:
seal.resolve(.rejected(error))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下内容时
firstly {
promiseGetJWTToken()
}.then { tokenJWT in
// no need go on because I have issues already here
}
Run Code Online (Sandbox Code Playgroud)
我收到:
类型“()”不能符合“Thenable”;只有结构/枚举/类类型可以符合协议
我也试过,它来自自动完成:
promiseGetJWTToken().then { token -> Thenable in
// no need go on because I have issues already here
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到:
协议 'Thenable' 只能用作通用约束,因为它具有 Self 或关联的类型要求
我决定尝试一下 PromiseKit,因为我在级联上有三个相互依赖的网络调用,但我不认为这会如此困难。谁能告诉我我做错了什么?
pip*_*acs 16
错误信息具有误导性;真正的问题是 .then 闭包应该返回一个新的 Thenable。在您的示例中, .then 闭包是空的。
或者直接使用 .done,如果不是链接承诺的话。
他们取代了then { }with 的用法done { }。
firstly {
promiseGetJWTToken()
}.done { tokenJWT in
// use your token
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |