0
을 감안할 때 다음과 같은 방법으로이 약속을 구성 : 내가 먼저 캐시를 시도하여, 새로운 약속을 반환하는 방법을 구현 한PromiseKit : 하나
func loadFromCache(url: URL) -> Promise<Array<StockItem>>
func loadFromNetwork(url: URL) -> Promise<Array<StockItem>>
, 다음 네트워크는
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)
}
}
}
}
다음과 같이
위의 메서드를 작성하는 더 좋은 방법이 있어야한다고 생각합니다. 중첩 된 클로저없이 적절한 약속 체인으로 어떻게 작성할 수 있습니까?
즉, 두 가지 약속을 어떻게 하나로 구성 할 수 있습니까?
관련이 있습니까? http://stackoverflow.com/questions/7040844/applicatives-compose-monads-dont –