Compte tenu des méthodes suivantes:PromiseKit: composer deux promesses dans un
func loadFromCache(url: URL) -> Promise<Array<StockItem>>
func loadFromNetwork(url: URL) -> Promise<Array<StockItem>>
J'ai mis en place une méthode qui retourne une nouvelle promesse, en essayant le cache d'abord, puis le réseau comme suit
func load(skip: Int, query: String?, onlyInStock: Bool = false) -> Promise<Array<StockItem>> {
let url = self.urlFor(skip: skip, query: query, onlyInStock: onlyInStock)
print("Loading: \(url)")
return Promise { fulfill, reject in
self.loadFromCache(url: url).then { (items) in
return fulfill(items)
}.catch { (error) in
self.loadFromNetwork(url: url).then { (items) in
fulfill(items)
}.catch { (error) in
reject(error)
}
}
}
}
Je pense qu'il doit y avoir une meilleure façon d'écrire la méthode ci-dessus. Comment puis-je l'écrire comme une chaîne de promesses appropriée, sans les fermetures imbriquées? En d'autres termes, comment puis-je composer deux promesses en une seule?
connexes? http://stackoverflow.com/questions/7040844/applicatives-compose-monads-dont –