Wrapping the request -> result cycle into own adapter(請(qǐng)求- >結(jié)果周期包裝成自己的適配器)
看向一個(gè)真實(shí)世界的例子肌稻,你可能想把請(qǐng)求- >結(jié)果周期包裝成自己的網(wǎng)絡(luò)適配器饭弓,然后它變得更加容易響應(yīng)成功显拜、錯(cuò)誤、或者網(wǎng)絡(luò)失敗后的重連等等
struct Network {
static let provider = MoyaProvider(endpointClosure: endpointClosure)
static func request(
target: MyService,
success successCallback: (JSON) -> Void,
error errorCallback: (statusCode: Int) -> Void,
failure failureCallback: (MoyaError) -> Void
) {
provider.request(target) { result in
switch result {
case let .success(response):
do {
try response.filterSuccessfulStatusCodes()
let json = try JSON(response.mapJSON())
successCallback(json)
}
catch error {
errorCallback(error)
}
case let .failure(error):
if target.shouldRetry {
retryWhenReachable(target, successCallback, errorCallback, failureCallback)
}
else {
failureCallback(error)
}
}
}
}
}
// usage:
Network.request(.zen, success: { zen in
showMessage(zen)
}, error: { err in
showError(err)
}, failure: { _ in
// oh well, no network apparently
})
總結(jié) 這小節(jié)的核心:
- 把Moya中的自己的請(qǐng)求-響應(yīng)過(guò)程自己在封裝一下掌唾,方便使用(只響應(yīng)結(jié)果)