1
ReactiveSwift有這個很棒的功能,叫做flatMapError
,它允許你在發生錯誤時用事件流進行響應。一個簡單的例子可能是:PromiseKit 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)
}
}
}
}