Package-level declarations
Types
Fetch 类持有数据的内部状态
Fetch.pluginImpls 本质是调用GenPluginLifecycleFn函数后保存的PluginLifecycle列表 ,这个函数的入参是Fetch实例与RequestOptions配置。
使用密封类或者密封接口,可以避免外部继承实现,但是不影响使用接口声明。
插件生命周期PluginLifecycle.onBefore的返回值类型, Fetch._runAsync会在请求发生前回调所有插件的PluginLifecycle.onBefore函数, 他们可以彼此覆盖。 stopNow可以阻止请求发出,不改变状态; returnNow可以将返回的状态作为Fetch.fetchState的状态改变ui;
插件生命周期PluginLifecycle.onRequest的返回值类型, Fetch._runAsync会在调用Fetch.requestFn请求发生前回调所有插件的PluginLifecycle.onRequest函数。 插件可以通过Fetch.requestFn拿到原始的请求函数,通过返回值requestDeferred来async
闭包的await
, 来改变实际请求。
插件函数 useXXXPlugin
的返回值是真实的插件Plugin对象, 可以通过在useRequestPluginsImpl中调用onInit函数,用来初始化 Fetch.fetchState状态。 插件对象自身实现了协程作用域CoroutineScope,持有Fetch的实例、请求RequestOptions配置等内容。 按需实现IFetch对应Fetch中的各个函数调用,就可以在插件函数useXXXPlugin
中需要使用副作用函数时,间接回调Fetch实例。 具体用例可以参考:useAutoRunPlugin
插件的生命周期对象:这个对象是插件Plugin.invoke方法执行后的返回值, 用来让插件监听请求的生命周期,当执行异步请求时,会在不同的阶段调用插件的生命周期;
Functions
返回一个空插件,避免直接使用EmptyPlugin实例
Description: 一个用来管理网络状态的Hook,它可以非常方便的接入到传统的 retrofit 网络请求模式中。 你几乎不需要做任何额外工作,就可以简单高效的在 Compose 中使用网络请求,并将请求数据作为状态,直接驱动UI。