android - 如何在暂停的协程流中使用回调?
问题描述
我正在使用协程流程,我需要从非暂停回调中调用暂停的发射。我无法控制回调,也无法暂停该接口方法。是否有可能做到这一点?
import kotlinx.coroutines.flow.flow
fun foo() = flow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
emit("Some result")
}
}
}
interface SomeCallback {
fun bar()
}
解决方案
在这种情况下可以使用callbackFlow 。请注意,它目前是实验性的。
fun foo() = callbackFlow {
someLibraryObject.listenToSomeEvent(object: SomeCallback {
override fun bar() {
offer("Some result")
}
}
}
有关更多详细信息,您可以参考此
推荐阅读
- scala - 为什么在 for 表达式中设置多个 val 不会导致异常?
- python - pyplot figure only updating after second call to ginput()
- sass - 媒体查询 scss 断点最佳实践
- c# - 如何在 PDFsharp 中将流转换为 PdfDocument
- virtualbox - VirtualBox 导入错误:代码 NS_ERROR_INVALID_ARG (0x80070057) - 参数值无效
- javascript - Angular 9 如何删除具有用户指定的索引范围的数组内的一系列对象?
- selenium - 使用 Selenium 的 POM 中 @By 和 @FindBy 之间的区别
- java - 无法关联 Kafka 请求 - 使用状态存储的响应
- javascript - 如何在 JS 中用 sinon 实现部分 subbing?
- python - 在 Flask Python 中将 javascript JSON.stringify 解码为 dict