ReactiveSwift具有称为flatMapError
的强大功能,允许您在发生错误时以事件流进行响应。一个简单的示例可能如下所示:
authenticationProducer.flatMapError { _ in self.reauthenticate() }
每当发生错误时,该错误就会映射到尝试重新进行身份验证的生产者中。
如何使用PromiseKit构建类似的运算符?函数签名看起来像:
func flatMapError<U>(_ transform: @escaping (Error) -> Promise<U>) -> Promise<U>
到目前为止,我的实现:
func flatMapError<U>(_ transform: @escaping (Error) -> Promise<U>) -> Promise<U> {
return Promise<U> { resolve, reject in
self.catch { error in
let promise = transform(error)
let _ = promise.then { value in
resolve(value)
}
}
}
}
最佳答案
使用recover
,它可以按照您的要求运行。
https://github.com/mxcl/PromiseKit/blob/master/Sources/Promise.swift#L254-L278
关于ios - PromiseKit flatMapError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44051126/