Мне чрезвычайно сложно использовать PromiseKit 6.13.1 в очевидной простой ситуации. У меня есть две следующие функции, возвращающие Promise<String>
, но я не могу найти способ использовать их с синтаксисом `` сначала {}. Затем {}:
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))
}
}
}
}
Когда я пытаюсь использовать следующее
firstly {
promiseGetJWTToken()
}.then { tokenJWT in
// no need go on because I have issues already here
}
, я получаю:
Тип '()' не может соответствовать 'Thenable'; только типы struct / enum / class могут соответствовать протоколам
Я тоже пробовал, что происходит из-за автозаполнения:
promiseGetJWTToken().then { token -> Thenable in
// no need go on because I have issues already here
}
В этом случае я получаю:
Протокол Thenable может использоваться только как общее c ограничение, потому что у него есть требования к типу Self или связанному типу
Я решил попробовать PromiseKit, потому что у меня есть три сетевых вызова, зависимых друг на друга по каскаду, но я бы не ожидал, что это будет так сложно. Может ли кто-нибудь показать мне, что я делаю не так?