当前位置: 首页 > news >正文

Kotlin协程序列:

1: 使用方式一 ,callback和coroutine相互转化。 

import kotlinx.coroutines.*
import java.lang.Exception
class MyCallback {fun doSomething(callback: (String?, Exception?) -> Unit) {// 模拟异步操作GlobalScope.launch {try {delay(1000) // 延迟 1 秒callback("Callback completed", null) // 回调成功} catch (e: Exception) {callback(null, e) // 回调失败}}}
}suspend fun coroutineFunc() {println("Coroutine function called")
}fun main() {val myCallback = MyCallback()val callbackToSuspend = suspendCoroutine<String> { continuation ->myCallback.doSomething { result, error ->if (error != null) {continuation.resumeWithException(error) // 将异常传递给协程} else {continuation.resume(result ?: "") // 将回调结果传递给协程}}}runBlocking {try {// 将回调函数转换成协程val job = launch { coroutineFunc() }// 执行回调函数println(callbackToSuspend)// 等待协程完成job.join()} catch (e: Exception) {// 处理异常println("Coroutine function failed: ${e.message}")}}
}

        

http://www.lryc.cn/news/56439.html

相关文章:

  • java获取视频时长
  • EDAS投稿系统的遇到的问题及解决办法
  • t-learning 产品经理课程笔记
  • 校招,从准备开始准备(持续更新ing...)
  • Android:使用LayerDrawable动态生成四宫格头像(包含双人、三人头像)
  • Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(三)
  • 中国电子学会2023年03月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)
  • 分布式事务培训
  • 关键词采集工具可以帮助我们做那些方面的工作
  • 2023年5月PMP难考吗?
  • 定语从句的省略
  • 简易小工具实现批量打开多个网页
  • swiper 点击事件
  • 旅游心得Traveling Experience
  • 【 SpringBoot ⽇志⽂件 】
  • ThinkPHP路由不转换的原因及解决方法
  • 【案例教程】基于RWEQ模型的土壤风蚀模数估算及其变化归因分析实践技术
  • Twitter推荐算法总架构和算法说明
  • 1.C语言题目---指针类(基础)
  • 【算法与数据结构】关于排序的问题思考
  • 行为型模式-命令模式
  • SHELL综合练习1
  • ROS开发之如何使用发布者、订阅者和话题消息?
  • 基于Java+Springboot+vue高校资源共享交流平台设计和实现
  • 收藏! 38个Python数据科研库
  • SpringBoot过滤器获取Bean-请求重复可读-获取请求体数据-用户IP归属地获取
  • 有哪些特别小众而有趣的编程语言呢?
  • vue中使用高德
  • React class组件和hooks setState异步更新数据详解
  • ToBeWritten之嵌入式操作系统