在普通函数内调用挂起函数

2023-12-22

我想在普通函数中调用阻塞挂起函数,但不阻止线程完成挂起函数然后返回Response

override fun intercept(chain: Interceptor.Chain): Response {

    // getSession is a suspend function
    val session = sessionProvider.getSession()

    return chain.proceed(
        chain
            .request()
            .newBuilder()
            .addHeader("Authorization", "${session.token}")
            .build()
    )
}

这看起来像你正在实现一个 OkHttp 拦截器,所以我希望intercept()正在后台线程上调用。

If so, use runBlocking() https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/run-blocking.html:

override fun intercept(chain: Interceptor.Chain): Response {

    // getSession is a suspend function
    val session = runBlocking { sessionProvider.getSession() }

    return chain.proceed(
        chain
            .request()
            .newBuilder()
            .addHeader("Authorization", "${session.token}")
            .build()
    )
}

runBlocking()将执行suspend函数,阻塞当前线程,直到该工作完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在普通函数内调用挂起函数 的相关文章

  • Android 上的多处理

    我一直在 Android 上执行一些测试 以验证并行化算法 如 FFT 的性能可以提高多少 我通过使用带有 JNI FFTW 的 pthread 和 Java 线程 来自 JTransforms 来实现这些算法 我没有像预期那样通过使用线程
  • 从ndk中的不同线程调用java方法

    我正在尝试使用 android 的 NDK 从 C 中的独立线程调用 java 静态方法 到目前为止我已经 JNIEnv env AttachJava jclass cls2 env gt FindClass com actvt showd
  • Android Volley:意外响应代码 405

    我的 Android Volley JsonObjectRequest 遇到 onErrorResponse 并出现以下问题 BasicNetwork performRequest Unexpected response code 405
  • 使用 ViewPager 从 Activity 到 Fragment 的通信

    我有一个 Activity 和两个 Fragmentstablayout含有一个viewpager 现在我可以通过实现谷歌的指南回调接口从片段到活动进行通信 但我怎样才能以另一种方式沟通从活动到片段 如果活动中发生了一些事情 外部事件 我想
  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • Android 偏好设置中的“是”或“否”确认[重复]

    这个问题在这里已经有答案了 我需要在 设置 中实现 重置 选项 单击该设置后 将打开一个简单的对话框 要求确认 我看过了DialogPreference但我似乎无法在任何地方找到好的解决方案或教程 有人可以帮我吗 我是初学者 想法甚至代码都
  • Ionic4 电容器 android livereload?

    是否有可能在带有 livereload 的 Android 设备上运行带有电容器的 ionic 4 应用程序 我已经找了几个小时的答案了 但没有成功 请帮忙 如果使用最新版本 ionic cli 现在有一个命令ionic capacitor
  • Android Studio 与 Google Play 服务的编译问题

    我正在运行 Android Studio 0 8 4 并在 Android Studio 0 8 2 上尝试过此操作 我正在运行 Java JDK 1 8 0 11 并尝试使用 JDK 1 8 0 05 每当我尝试构建我的 android
  • Android 中的处理程序到处理程序与 Messenger 到 Messenger 通信

    问题 使用起来是否 更好 更快且开销更少 Handler http developer android com reference android os Handler html与使用 Handler 通信相比信使 http develop
  • 使用audioSessionId值实例化AudioFx类?

    我已经阅读了 Android API 并尝试在互联网上搜索有关声明自定义audioSessionId然后用它audioSessionId初始化 AudioFx 类并为我的 MediaPlayer 或 AudioTrack 分配硬编码audi
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • 如何在我的谷歌上嵌入转弯导航

    我想在我的 Android 应用程序中嵌入逐段导航 请给我一个教程或如何执行此操作的想法 提前致谢 如果您不固定使用谷歌地图 您可以使用基于 OpenStreetMap 地图的维基百科版本 的 SDK 有几个不错的 SDK 提供商 skob
  • 如何解决Android错误类型3?

    下面是我在项目中使用的清单格式 但是每当我尝试运行模拟器时 我都会收到下面提到的错误 请给我一个解决该错误的准确解决方案 工具信息 Android studio Nexus S API 22 android 5 1 1 我的清单文件格式
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 通知管理器所需的权限

    我正在尝试使用以下命令将振铃器设置为静音且请勿打扰优先级 AudioManager myAudioMgr AudioManager context getSystemService Context AUDIO SERVICE Notific
  • 如何在 Kotlin 中使用参数进行延迟初始化

    在 Kotlin 中 我可以在没有参数的情况下执行延迟初始化 如下声明 val presenter by lazy initializePresenter abstract fun initializePresenter T 但是 如果我的
  • 谷歌地图URL中参数的含义是什么

    我正在 Android 上使用 Webkit 浏览器 我想在以下 URL 中获得一个红色 A 符号
  • Android IntentService无法实例化类;没有空构造函数

    我有一个MainActivity需要访问在线 API 从而使用网络资源 的类 这需要我在单独的文件中创建的后台线程HttpRequestService java MainActivity java public class MainActi
  • 如何像UCBrowser一样使用webview打开url

    我是安卓新手 我正在尝试制作一个示例应用程序来在 webview 中打开网站 问题是 网站以桌面模式打开 如何才能像UC浏览器 手机模式 一样打开网站 尝试这个 它应该有效 webview1 getSettings setJavaScrip
  • 如何获取视图到手机底部的距离?

    如果我在布局上有某个视图 ImageView 例如 是否可以找到View的下边框到手机屏幕底部的距离 Thanks instantiate DisplayMetrics DisplayMetrics dm new DisplayMetric

随机推荐

  • 设置开发设备(????????????没有权限)

    我使用的是三星 Galaxy Nexus 手机 安卓4 0平台 我正在 Ubuntu Linux 操作系统上开发 Android 应用程序 我想直接在三星手机设备上运行我的应用程序 因此我执行了以下设置步骤 在我的项目中AndroidMan
  • Lucene不能查询null?

    我们如何构造一个查询来搜索特定字段不为空 field name 不管用 我试过field name a to z 这对于英语来说效果很好 但并不涵盖所有语言 还有其他建议吗 我发现这在某些情况下有效field 0 TO 9 a TO z
  • 选择 Rails 主机 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我即将挑选一个 Rails 主机 我think我需要一个 VPS 解决方案 因为 1 我的 Rails 应用程序有需要安装才能使其正常工作的 g
  • 在R中找出一个月的天数

    我在P有个约会 date as Date 2011 02 23 Y m d 是否可以找出该特定日期该月的天数 关于闰年 在 PHP 中 它看起来与此类似 http www php net manual en function date ph
  • javax.mail.internet.ParseException:需要“/”,已获取文件

    我在尝试发送带有文件附件的电子邮件时遇到错误 javax mail internet ParseException Expected got files at javax mail internet ContentType
  • C++,确定素数

    我昨天开始读一本关于C 的书 到目前为止 我已经写了 100 页 并用这个数字来编写我的第一个程序 我想让它找出给定的数字是否是素数 我对此有 2 个问题 我知道我的方法并不好 该程序正在检查每个数字 这使得程序变得很大 做到这一点的理想方
  • 根据颜色分割图像中的像素(Matlab)

    我正在尝试仅使用颜色信息 目前 来分割包含多个乐高积木的图像 目的是找到乐高积木 例如是绿色的 我尝试过使用 k 均值聚类 但给定的不同颜色砖块的数量各不相同 我还尝试使用 Matlab 中的以下示例website http uk math
  • 如何修复 TypeError:无法从 Express Nodemailer 读取属性“名称”

    所以我想说 我一直在寻找这个问题的答案 我也尝试控制台记录我的 req body 帖子表单 但我一直得不到定义 所以我觉得我正在丢失发送的表单中的数据 我不确定我做错了什么 所以是时候展示一些代码了 请注意 我使用 Handlebars 进
  • 用烧瓶计算唯一访客数

    我想计算唯一访问者的数量并将该数字存储在我的数据库中 我知道我可以通过以下方式获取 IP 地址 request remote addr 所以我的默认计划是在我的数据库中存储这个地址和时间戳 对于任何新访问者 我都会比较该 IP 地址是否已添
  • 我可以在 PHP 中使用多个类来扩展一个类吗?

    如果我有几个具有我需要的功能的类 但想单独存储以进行组织 我可以扩展一个类以同时拥有这两个功能吗 i e class a extends b extends c 编辑 我知道如何一次扩展一个类 但我正在寻找一种方法来立即使用多个基类扩展一个
  • Box2D 碰撞错误

    我目前在 libgx 中使用 java 中的 box2d 物理引擎 并且面临碰撞问题 问题是身体停止移动 并且在平坦区域上出现碰撞点 我的工作方式是制作多个主体 每个主体代表一个块 并且这些块是并排的 看这里的碰撞点 物体在这里不应该碰撞
  • 将 Map 转换为 json

    I have Map
  • 无法绑定到“control”,因为它不是 (myComponent) 的已知属性

    这是我的 app module ts import NgModule from angular core import BrowserModule from angular platform browser import HttpModul
  • 将 null 值表示为 xml jaxb 中的空元素

    我需要在 jaxb 中将 null 值显示为空元素 我正在使用 jaxb 的 moxy 实现 我找到了这个选项 XmlNullPolicy emptyNodeRepresentsNull true nullRepresentationFor
  • 回收视图膨胀不同的行:- 绑定数据时出现异常

    我正在研究Recyceview具有不同的项目通货膨胀 当我NOT将数据绑定到onBindViewHolder的方法RecycleView比它不崩溃 但是当我绑定里面的数据时onBindViewHolder比我得到的Exception 请检查
  • git push origin main 之后,没有任何反应

    我正在尝试将一个包含 100 多个文件的项目上传到 github 这些是 GitHub 希望我在 Git Bash 终端上执行的步骤 cd
  • javafx.scene.image.Image("flower.png") 在哪里寻找flower.png?

    我想知道JavaFX Image构造函数的相对路径解析算法的用途 独立应用程序 浏览器部署的应用程序 Webstart 部署的应用程序 如果该算法可能会在多个位置查找 我想知道它们对于上述每个部署场景的作用 如果将应用程序放入 jar 中时
  • 使用会话变量有多安全 - asp.net / c#

    所以基本上我想知道我使用会话变量的方式有多安全 我有一个登录表单 用户在其中输入用户名 密码 然后对其进行参数化 然后进行查询 如果用户名 密码存在 则从数据库表返回用户ID 这对于每个用户来说都是独一无二的 当我有这个值时 我想知道这种方
  • Lodash:当我嵌套对象时如何使用过滤器?

    考虑这个例子 我在用Lodash http lodash com docs data category uri categories 0b092e7c 4d2c 4eba 8c4e 80937c9e483d parent Food name
  • 在普通函数内调用挂起函数

    我想在普通函数中调用阻塞挂起函数 但不阻止线程完成挂起函数然后返回Response override fun intercept chain Interceptor Chain Response getSession is a suspen