Run icon indicating copy to clipboard operation
Run copied to clipboard

apiDSL方法中为什么要重复多次创建`ViewModelDsl<Response>()`对象呢

Open HeMing123 opened this issue 6 years ago • 1 comments

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

HeMing123 avatar Feb 14 '20 02:02 HeMing123

因为创建2次ViewModelDsl之后,就可以做拦截监听操作。比如里层的onError返回false,就代表base还要处理一遍。感谢大佬的提issue 不好意思现在才看到。感谢!!!!!

RunFeifei avatar Feb 28 '20 05:02 RunFeifei