我有一个要转换为Promise<T>
的Guarantee<Bool>
,其中true表示承诺已兑现,而false则被拒绝。
我设法达到使用
return getPromise()
.map { _ in true }
.recover { _ in Guarantee.value(false) }
我想知道是否有更整洁的方法来做到这一点。
最佳答案
您可以按以下用法扩展promise
以方便使用
extension Promise {
func guarantee() -> Guarantee<Bool> {
return Guarantee<Bool>(resolver: { [weak self] (body) in
self?.done({ (result) in
body(true)
}).catch({ (error) in
body(false)
})
})
}
}
用法:
// If you want to execute a single promise and care about success only.
getPromise().guarantee().done { response in
// Promise success handling here.
}
// For chaining multiple promises
getPromise().guarantee().then { bool -> Promise<Int> in
return .value(20)
}.then { integer -> Promise<String> in
return .value("Kamran")
}.done { name in
print(name)
}.catch { e in
print(e)
}