From d6d464765a76c19c6e6738d272cfee9cc6fc0abd Mon Sep 17 00:00:00 2001 From: drake Date: Wed, 16 Aug 2023 21:08:56 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/auto-dialog.md | 4 +- docs/coroutine-request.md | 2 +- docs/debounce.md | 4 +- docs/download-file.md | 2 +- docs/https.md | 6 +-- docs/index.md | 37 +++++++++---------- docs/log-notice.md | 2 +- docs/progress.md | 4 +- docs/request.md | 2 +- docs/timing.md | 24 ++++++------ docs/track.md | 2 +- .../java/com/drake/net/sample/base/App.kt | 4 +- .../com/drake/net/sample/constants/Api.kt | 2 +- .../drake/net/sample/mock/MockDispatcher.kt | 2 +- .../ui/fragment/CallbackRequestFragment.kt | 2 +- .../net/sample/ui/fragment/FastestFragment.kt | 2 +- .../sample/ui/fragment/InterceptorFragment.kt | 2 +- .../sample/ui/fragment/LimitedTimeFragment.kt | 2 +- .../ui/fragment/ParallelNetworkFragment.kt | 6 +-- .../ui/fragment/PreviewCacheFragment.kt | 4 +- .../sample/ui/fragment/ReadCacheFragment.kt | 2 +- .../ui/fragment/RequestMethodFragment.kt | 18 ++++----- .../sample/ui/fragment/StateLayoutFragment.kt | 2 +- .../sample/ui/fragment/SyncRequestFragment.kt | 2 +- .../ui/fragment/UniqueRequestFragment.kt | 2 +- .../com/drake/net/sample/vm/UserViewModel.kt | 4 +- 26 files changed, 71 insertions(+), 74 deletions(-) diff --git a/docs/auto-dialog.md b/docs/auto-dialog.md index cbab287eb..dc64da00e 100644 --- a/docs/auto-dialog.md +++ b/docs/auto-dialog.md @@ -6,7 +6,7 @@ Net支持发起请求开始时显示加载框, 请求结束时隐藏加载框( ```kotlin hl_lines="1" scopeDialog { tvFragment.text = Post("dialog") { - param("u_name", "drake") // 请求参数 + param("username", "用户名") // 请求参数 param("pwd", "123456") }.await() } @@ -28,7 +28,7 @@ val dialog = BubbleDialog(requireActivity(), "加载中") scopeDialog(dialog) { binding.tvFragment.text = Post("dialog") { - param("u_name", "drake") + param("username", "用户名") param("pwd", "123456") }.await() } diff --git a/docs/coroutine-request.md b/docs/coroutine-request.md index 43118885b..cceb6df65 100644 --- a/docs/coroutine-request.md +++ b/docs/coroutine-request.md @@ -7,7 +7,7 @@ val job = scopeNetLife { repeat(10000) { // 这里将返回的数据显示在TextView上 launch { - tvFragment.text = Get("https://github.com/liangjingkanji/Net/").await() + tvFragment.text = Get(Api.PATH).await() } } } diff --git a/docs/debounce.md b/docs/debounce.md index 753c74fb1..90d36b77b 100644 --- a/docs/debounce.md +++ b/docs/debounce.md @@ -31,4 +31,6 @@ binding.etInput.debounce().distinctUntilChanged().launchIn(this) { 指定参数设置节流阀超时时间 ```kotlin fun EditText.debounce(timeoutMillis: Long = 800) -``` \ No newline at end of file +``` +
+1. [示例-自动搜索分页列表](https://github.com/liangjingkanji/Net/blob/a78d46118666a3509d3fcc79c1d28ad81e2d5a57/sample/src/main/java/com/drake/net/sample/ui/fragment/EditDebounceFragment.kt) \ No newline at end of file diff --git a/docs/download-file.md b/docs/download-file.md index 6d88c710b..c74fa1e89 100644 --- a/docs/download-file.md +++ b/docs/download-file.md @@ -13,7 +13,7 @@ scopeNetLife { ```kotlin scopeNetLife { val file = - Get("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") { + Get("https://github.com/liangjingkanji/Net/releases/latest/download/net-sample.apk") { setDownloadFileName("net.apk") setDownloadDir(requireContext().filesDir) setDownloadMd5Verify() diff --git a/docs/https.md b/docs/https.md index f3df3fb80..a263ecabc 100644 --- a/docs/https.md +++ b/docs/https.md @@ -6,7 +6,7 @@ Https如果使用的CA证书, 不需要任何配置可以直接访问 ```kotlin scopeNetLife { - tvFragment.text = Get("https://github.com/liangjingkanji/Net/").await() + tvFragment.text = Get(Api.PATH).await() } ``` @@ -25,7 +25,7 @@ scopeNetLife { ```kotlin scopeNetLife { - Get("https://github.com/liangjingkanji/Net/"){ + Get(Api.PATH){ setClient { trustSSLCertificate() } @@ -50,7 +50,7 @@ scopeNetLife { ```kotlin scopeNetLife { - Get("https://github.com/liangjingkanji/Net/") { + Get(Api.PATH) { setClient { val privateCertificate = resources.assets.open("https.certificate") // 这里的证书是放到应用的资产目录下 setSSLCertificate(privateCertificate) diff --git a/docs/index.md b/docs/index.md index 599bea4ef..92cf07741 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,49 +22,46 @@ Net是基于[OkHttp](https://github.com/square/okhttp)/协程的非侵入式框 === "简单请求" ```kotlin - scopeNetLife { 创建作用域 - // 这个大括号内就属于作用域内部 - val data = Get("https://github.com/liangjingkanji/Net/").await() // 发起GET请求并返回`String`类型数据 + scopeNetLife { + // 大括号内属于作用域 + val data = Get(Api.USER).await() // 发起GET请求并返回`String` } ``` === "同步请求" ```kotlin scopeNetLife { - val userInfo = Get("https://github.com/liangjingkanji/BRV/").await() // 立即请求 - val config = Get("https://github.com/liangjingkanji/Net/"){ - param("userId", userInfo.id) // 使用上个请求的数据作为参数 - }.await() // 请求B 将等待A请求完毕后发起GET请求并返回数据 + // B将等待A请求返回结果后发起请求 + val userInfo = Get(Api.USER).await() // A + + val config = Get(Api.CONFIG){ // B + param("userId", userInfo.id) // 将上个请求结果作为参数 + }.await() } ``` === "并发请求" ```kotlin scopeNetLife { - // 以下两个网络请求属于同时进行中 - val getUserInfoAsync = Get("https://github.com/liangjingkanji/Net/") // 立即请求 - val getConfigAsync = Get("https://github.com/liangjingkanji/BRV/") // 立即请求 + // 两个请求同时发起 + val getUserInfoAsync = Get(Api.USER) + val getConfigAsync = Get(Api.CONFIG) val userInfo = getUserInfoAsync.await() // 等待数据返回 val config = getConfigAsync.await() } ``` -多个网络请求在同一个作用域内可以统一管理 - -如果多个网络请求之间毫无关联, 可以创建多个作用域来请求 +1. 多个网络请求在同一个作用域内可以统一管理 +2. 如果多个网络请求之间毫无关联, 可以创建多个作用域来请求 !!! failure "强制初始化" 多进程或Xposed项目要求先[初始化](config.md#_1) -并发请求错误示例 +自动识别`Url`或者`Path`请求 ```kotlin hl_lines="3" scopeNetLife { - // 请求A - val userInfo = Get("https://github.com/liangjingkanji/Net/").await() - // 由于上面使用`await()`函数, 所以必须等待A请求返回结果后才会执行B - val getConfigAsync = Post("https://github.com/liangjingkanji/Net/") - - val config = getConfigAsync.await() // 等待任务B返回数据 + val userInfo = Get("/net").await() + val config = Get("https://github.com/liangjingkanji/net").await() } ``` diff --git a/docs/log-notice.md b/docs/log-notice.md index 1212ef99f..8c05631a4 100644 --- a/docs/log-notice.md +++ b/docs/log-notice.md @@ -14,7 +14,7 @@ implementation "com.github.chuckerteam.chucker:library:3.5.2" 添加拦截器 ```kotlin -NetConfig.initialize("https://github.com/liangjingkanji/", this) { +NetConfig.initialize(Api.HOST, this) { // ... if (BuildConfig.DEBUG) { addInterceptor( diff --git a/docs/progress.md b/docs/progress.md index ec4ecf5ae..6c040d8b3 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -5,7 +5,7 @@ Net支持上传/下载的进度监听, 且具备完善的进度信息 ```kotlin scopeNetLife { - Post("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") { + Post(Api.UPLOAD) { param("file", assetsFile()) addUploadListener(object : ProgressListener() { override fun onProgress(p: Progress) { @@ -29,7 +29,7 @@ scopeNetLife { ```kotlin scopeNetLife { val file = - Get("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") { + Get("https://github.com/liangjingkanji/Net/releases/latest/download/net-sample.apk") { setDownloadFileName("net.apk") setDownloadDir(requireContext().filesDir) diff --git a/docs/request.md b/docs/request.md index e312d494b..82c9ec8d7 100644 --- a/docs/request.md +++ b/docs/request.md @@ -10,7 +10,7 @@ ```kotlin scopeNetLife { val userInfo = Post(Api.LOGIN) { - param("username", "drake") + param("username", "用户名") param("password", "6f2961eb44b12123393fff7e449e50b9de2499c6") }.await() } diff --git a/docs/timing.md b/docs/timing.md index 349ecae96..067d27565 100644 --- a/docs/timing.md +++ b/docs/timing.md @@ -9,12 +9,12 @@ scopeDialog { // 当接口请求在100毫秒内没有完成会抛出异常TimeoutCancellationException withTimeout(100) { - Get(Api.BANNER).await() + Get(Api.PATH).await() } }.catch { - Log.e("日志", "catch", it) // catch无法接收到CancellationException异常 + Log.e("日志", "请求错误", it) // catch无法接收到CancellationException异常 }.finally { - Log.e("日志", "finally", it) // TimeoutCancellationException属于CancellationException子类故只会被finally接收到 + Log.e("日志", "请求完成", it) // TimeoutCancellationException属于CancellationException子类故只会被finally接收到 if (it is TimeoutCancellationException) { toast("由于未在指定时间完成请求则取消请求") } @@ -30,11 +30,10 @@ scopeNetLife { // 每两秒请求一次, 总共执行10次 repeat(20) { delay(1000) - val data = - Get("http://api.k780.com/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json").await() - binding.tvContent.text = - JSONObject(data).getJSONObject("result").getString("datetime_2") - // 通过return@repeat可以终止循环 + val data = Get(Api.PATH).await() + if(it = 10) { + return@repeat + } } } ``` @@ -45,11 +44,10 @@ scopeNetLife { scopeNetLife { while (true) { delay(1.toDuration(DurationUnit.SECONDS)) - val data = - Get("http://api.k780.com/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json").await() - binding.tvContent.text = - JSONObject(data).getJSONObject("result").getString("datetime_2") - // 通过break可以终止循环 + val data = Get(Api.PATH).await() + if(data.type = 3) { + break + } } } ``` \ No newline at end of file diff --git a/docs/track.md b/docs/track.md index 15ff2d3e5..9aca64ed9 100644 --- a/docs/track.md +++ b/docs/track.md @@ -4,7 +4,7 @@ Net中网络请求异常会LogCat输出, 除非开发者修改全局错误处理 演示访问一个不存在的请求路径 ```kotlin scopeNetLife { - tvFragment.text = Get("https://githuberror.com/liangjingkanji/Net/").await() + tvFragment.text = Get("https://error.com/Net/").await() } ``` diff --git a/sample/src/main/java/com/drake/net/sample/base/App.kt b/sample/src/main/java/com/drake/net/sample/base/App.kt index 93ffb08fc..e03109de1 100644 --- a/sample/src/main/java/com/drake/net/sample/base/App.kt +++ b/sample/src/main/java/com/drake/net/sample/base/App.kt @@ -76,11 +76,11 @@ class App : Application() { MockDispatcher.initialize() - initializeThirdPart() + initializeView() } /** 初始化第三方依赖库库 */ - private fun initializeThirdPart() { + private fun initializeView() { // 全局缺省页配置 [https://github.com/liangjingkanji/StateLayout] StateConfig.apply { diff --git a/sample/src/main/java/com/drake/net/sample/constants/Api.kt b/sample/src/main/java/com/drake/net/sample/constants/Api.kt index a9f92a617..c8446d84d 100644 --- a/sample/src/main/java/com/drake/net/sample/constants/Api.kt +++ b/sample/src/main/java/com/drake/net/sample/constants/Api.kt @@ -7,7 +7,7 @@ package com.drake.net.sample.constants object Api { const val HOST = "http://127.0.0.1:8091" - const val TEST = "/test" + const val TEXT = "/text" const val DELAY = "/delay" const val UPLOAD = "/upload" const val GAME = "/game" diff --git a/sample/src/main/java/com/drake/net/sample/mock/MockDispatcher.kt b/sample/src/main/java/com/drake/net/sample/mock/MockDispatcher.kt index 633207606..a5972d481 100644 --- a/sample/src/main/java/com/drake/net/sample/mock/MockDispatcher.kt +++ b/sample/src/main/java/com/drake/net/sample/mock/MockDispatcher.kt @@ -36,7 +36,7 @@ class MockDispatcher : Dispatcher() { override fun dispatch(request: RecordedRequest): MockResponse { return when (request.requestUrl?.encodedPath ?: "") { - Api.TEST -> getString("Request Success : ${request.method}") + Api.TEXT -> getString("Request Success : ${request.method}") Api.DELAY -> getString("Request Success : ${request.method}").setBodyDelay(2, TimeUnit.SECONDS) Api.UPLOAD -> uploadFile(request) Api.GAME -> getRawResponse(R.raw.game) diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/CallbackRequestFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/CallbackRequestFragment.kt index 638230989..3f5622970 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/CallbackRequestFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/CallbackRequestFragment.kt @@ -19,7 +19,7 @@ class CallbackRequestFragment : override fun initView() { // Net同样支持OkHttp原始的队列任务 - Net.post(Api.TEST).enqueue(object : Callback { + Net.post(Api.TEXT).enqueue(object : Callback { override fun onFailure(call: Call, e: IOException) { } diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/FastestFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/FastestFragment.kt index 7b28a812a..d0342aa36 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/FastestFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/FastestFragment.kt @@ -19,7 +19,7 @@ class FastestFragment : EngineFragment(R.layout.fragment */ // 同时发起四个网络请求 - val deferred2 = Get(Api.TEST) { setGroup("最快") } + val deferred2 = Get(Api.TEXT) { setGroup("最快") } val deferred3 = Post("navi/json") { setGroup("最快") } val deferred = Get("api0") { setGroup("最快") } // 错误接口 val deferred1 = Get("api1") { setGroup("最快") } // 错误接口 diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/InterceptorFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/InterceptorFragment.kt index bf3eed765..dab2d2eb1 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/InterceptorFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/InterceptorFragment.kt @@ -13,7 +13,7 @@ class InterceptorFragment : override fun initView() { scopeNetLife { - binding.tvFragment.text = Get(Api.TEST) { + binding.tvFragment.text = Get(Api.TEXT) { // 拦截器只支持全局, 无法单例, 请查看[com.drake.net.sample.interceptor.NetInterceptor] }.await() } diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/LimitedTimeFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/LimitedTimeFragment.kt index 5407b2c34..a2776d33b 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/LimitedTimeFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/LimitedTimeFragment.kt @@ -24,7 +24,7 @@ class LimitedTimeFragment : EngineFragment(R.layout. scopeDialog { // 当接口请求在100毫秒内没有完成会抛出异常TimeoutCancellationException withTimeout(100) { - Get(Api.TEST).await() + Get(Api.TEXT).await() } }.catch { Log.e("日志", "catch", it) // catch无法接收到CancellationException异常 diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/ParallelNetworkFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/ParallelNetworkFragment.kt index 4957b57f5..dcb7b09b5 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/ParallelNetworkFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/ParallelNetworkFragment.kt @@ -17,9 +17,9 @@ class ParallelNetworkFragment : scopeNetLife { // 同时发起三个请求 - val deferred = Get(Api.TEST) - val deferred1 = Post(Api.TEST) - val deferred2 = Trace(Api.TEST) + val deferred = Get(Api.TEXT) + val deferred1 = Post(Api.TEXT) + val deferred2 = Trace(Api.TEXT) // 同时接收三个请求数据 deferred.await() diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/PreviewCacheFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/PreviewCacheFragment.kt index afda0ef3e..d1d78d117 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/PreviewCacheFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/PreviewCacheFragment.kt @@ -19,13 +19,13 @@ class PreviewCacheFragment : EngineFragment(R.layout.f scopeNetLife { // 然后执行这里(网络请求) - binding.tvFragment.text = Get(Api.TEST) { + binding.tvFragment.text = Get(Api.TEXT) { setCacheMode(CacheMode.WRITE) }.await() Log.d("日志", "网络请求") }.preview(true) { // 先执行这里(仅读缓存), 任何异常都视为读取缓存失败 - binding.tvFragment.text = Get(Api.TEST) { + binding.tvFragment.text = Get(Api.TEXT) { setCacheMode(CacheMode.READ) }.await() Log.d("日志", "读取缓存") diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/ReadCacheFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/ReadCacheFragment.kt index f548ae544..f349124c0 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/ReadCacheFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/ReadCacheFragment.kt @@ -19,7 +19,7 @@ class ReadCacheFragment : EngineFragment(R.layout.frag override fun initView() { scopeNetLife { binding.tvFragment.text = - Post(Api.TEST) { + Post(Api.TEXT) { setCacheMode(CacheMode.REQUEST_THEN_READ) // 请求网络失败会读取缓存, 请断网测试 // setCacheKey("自定义缓存KEY") }.await() diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/RequestMethodFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/RequestMethodFragment.kt index f2c93ec23..9d3993460 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/RequestMethodFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/RequestMethodFragment.kt @@ -25,49 +25,49 @@ class RequestMethodFragment : private fun GET() { scopeNetLife { - binding.tvFragment.text = Get(Api.TEST).await() + binding.tvFragment.text = Get(Api.TEXT).await() } } private fun POST() { scopeNetLife { - binding.tvFragment.text = Post(Api.TEST).await() + binding.tvFragment.text = Post(Api.TEXT).await() } } private fun HEAD() { scopeNetLife { - binding.tvFragment.text = Head(Api.TEST).await() + binding.tvFragment.text = Head(Api.TEXT).await() } } private fun PUT() { scopeNetLife { - binding.tvFragment.text = Put(Api.TEST).await() + binding.tvFragment.text = Put(Api.TEXT).await() } } private fun PATCH() { scopeNetLife { - binding.tvFragment.text = Patch(Api.TEST).await() + binding.tvFragment.text = Patch(Api.TEXT).await() } } private fun DELETE() { scopeNetLife { - binding.tvFragment.text = Delete(Api.TEST).await() + binding.tvFragment.text = Delete(Api.TEXT).await() } } private fun TRACE() { scopeNetLife { - binding.tvFragment.text = Trace(Api.TEST).await() + binding.tvFragment.text = Trace(Api.TEXT).await() } } private fun OPTIONS() { scopeNetLife { - binding.tvFragment.text = Options(Api.TEST).await() + binding.tvFragment.text = Options(Api.TEXT).await() } } @@ -92,7 +92,7 @@ class RequestMethodFragment : // }.await() // 创建JSON - binding.tvFragment.text = Post(Api.TEST) { + binding.tvFragment.text = Post(Api.TEXT) { json("name" to name, "age" to age, "measurements" to measurements) // 同时支持Map集合 }.await() } diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/StateLayoutFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/StateLayoutFragment.kt index 73b30de3d..2e2827062 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/StateLayoutFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/StateLayoutFragment.kt @@ -17,7 +17,7 @@ class StateLayoutFragment : override fun initView() { binding.state.onRefresh { scope { - binding.tvFragment.text = Get(Api.TEST).await() + binding.tvFragment.text = Get(Api.TEXT).await() } }.showLoading() } diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/SyncRequestFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/SyncRequestFragment.kt index c37c85ac0..02d831489 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/SyncRequestFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/SyncRequestFragment.kt @@ -13,7 +13,7 @@ class SyncRequestFragment : override fun initView() { thread { // 网络请求不允许在主线程 val result = try { - Net.post(Api.TEST).execute() + Net.post(Api.TEXT).execute() } catch (e: Exception) { // 同步请求失败会导致崩溃要求捕获异常 "请求错误 = ${e.message}" } diff --git a/sample/src/main/java/com/drake/net/sample/ui/fragment/UniqueRequestFragment.kt b/sample/src/main/java/com/drake/net/sample/ui/fragment/UniqueRequestFragment.kt index 876040bb5..3fadbc226 100644 --- a/sample/src/main/java/com/drake/net/sample/ui/fragment/UniqueRequestFragment.kt +++ b/sample/src/main/java/com/drake/net/sample/ui/fragment/UniqueRequestFragment.kt @@ -20,7 +20,7 @@ class UniqueRequestFragment : scope?.cancel() // 如果存在则取消 scope = scopeNetLife { - val result = Post(Api.TEST).await() + val result = Post(Api.TEXT).await() Log.d("日志", "请求到结果") // 你一直重复点击"发起请求"按钮会发现永远无法拿到请求结果, 因为每次发起新的请求会取消未完成的 binding.tvResult.text = result } diff --git a/sample/src/main/java/com/drake/net/sample/vm/UserViewModel.kt b/sample/src/main/java/com/drake/net/sample/vm/UserViewModel.kt index 2372f561f..2880a8600 100644 --- a/sample/src/main/java/com/drake/net/sample/vm/UserViewModel.kt +++ b/sample/src/main/java/com/drake/net/sample/vm/UserViewModel.kt @@ -28,14 +28,14 @@ class UserViewModel : ViewModel() { * 开始非阻塞异步任务 * 返回Deferred, 调用await()才会返回结果 */ - fun fetchList(scope: CoroutineScope) = scope.Get(Api.TEST) + fun fetchList(scope: CoroutineScope) = scope.Get(Api.TEXT) /** * 开始阻塞异步任务 * 直接返回结果 */ suspend fun fetchPrecessData() = coroutineScope { - val response = Get(Api.TEST).await() + val response = Get(Api.TEXT).await() response + "处理数据" } } \ No newline at end of file