2017-05-18 2 views
1

ReactiveSwift a cette grande fonction appelée flatMapError qui vous permet de répondre avec un flux d'événements lorsqu'une erreur survient. Un exemple simple pourrait ressembler à:PromiseKit flatMapError

authenticationProducer.flatMapError { _ in self.reauthenticate() } 

Chaque fois qu'une erreur se produit, cette erreur dans un cartographiés obtient producteur qui tente de réauthentifier.

Comment créer un opérateur similaire à l'aide de PromiseKit? La signature de la fonction ressemblerait à ceci:

func flatMapError<U>(_ transform: @escaping (Error) -> Promise<U>) -> Promise<U> 

Ma mise en œuvre jusqu'à présent:

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) 
      } 
     } 
    } 
} 

Répondre