Run
Run copied to clipboard
apiDSL方法中为什么要重复多次创建`ViewModelDsl<Response>()`对象呢
apiDSL方法中为什么要重复多次创建ViewModelDsl<Response>()对象呢?抽离出来不更好吗?
protected fun <Response> apiDSL(apiDSL: ViewModelDsl<Response>.() -> Unit) {
val s: ViewModelDsl<Response> = ViewModelDsl<Response>().apply(apiDSL)
api<Response> {
onRequest {
s.request()
}
onResponse {
s.onResponse?.invoke(it)
}
onStart {
val override = s.onStart?.invoke()
if (override == null || !override) {
onApiStart()
}
override
}
onError { error ->
val override = s.onError?.invoke(error)
if (override == null || !override) {
onApiError(error)
}
override
}
onFinally {
val override = s.onFinally?.invoke()
if (override == null || !override) {
onApiFinally()
}
override
}
}
}
因为创建2次ViewModelDsl之后,就可以做拦截监听操作。比如里层的onError返回false,就代表base还要处理一遍。感谢大佬的提issue 不好意思现在才看到。感谢!!!!!