问题标签 [kotlin-flow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6435 浏览

android - Kotlin Flow 并行执行两个 API 调用,并在每个结果到达时收集它

我正在尝试使用Kotlin Flows. 这是我现在正在尝试的

这里的问题collect是仅在getDataFromServer返回时调用。我的期望是我应该从缓存中获取第一个事件,然后在几毫秒后从服务器获取第二个事件。在这种情况下"Response Received",会打印两次,但会立即打印一次。

在此其他变体"Response Received"中,仅在getDataFromServer()返回后打印一次。

我之前使用的是 RxJava Flowable.concat(),它运行良好。Kotlin Flows 中有什么东西可以模仿这种行为吗?

0 投票
1 回答
1438 浏览

android - android:kotlin流多个事件

我在我的应用程序中使用流,但是我遇到了一些问题,它以不同的方式击中逻辑两次或没有它的 8/9 次。我正在使用 livedata 作为数据绑定流。

xml

代码

此调试语句使用 distinctUntilChanged() 调用两次或没有它调用 8-9 次。我不太确定为什么,但是这个流程正在与另一个流程相结合,并且它调用了我的其他逻辑方式。

0 投票
2 回答
1354 浏览

android - 带有 Dao 和通用 Result 类的协程流

我有一个 Dao 类,它以流的形式返回 Car 对象列表。

在我的存储库中,我可以按如下方式使用这个 Dao

我可以flow在视图模型中观察到这一点,一切正常,生活也很好。

现在,在阅读了Developer Android 网站上关于

包含有关加载此数据的数据和状态的通用类。

我受到了启发,所以我在这里又读了一篇关于开设 Result 课程的文章。

所以,我对存储库做了一些更改,但我无法解决它们。

错误:

错误是Return is not allowed hereChange to 'return@Collect'

我想要实现的是:

我执行 Result 的方法是错误的吗?我无法弄清楚出了什么问题。为什么我不能只从流中返回流

0 投票
2 回答
2849 浏览

kotlin-coroutines - 如何链接协程流?

我可以通过以下方式轻松链接coroutine Flows:

但是如果我想单独重试someFlowanotherFlow如果someFlow已经成功返回一个值但anotherFlow失败了,我想anotherFlow通过使用来自someFlow(成功时返回的值)的值重试。

最好的方法是什么?

0 投票
2 回答
4989 浏览

android - 有流的房间在空时返回 null

我刚刚开始研究 Room、Coroutines 和 Flow,并且遇到了一些奇怪的事情:我所期望的空流实际上有一个 null 项。

我的设置如下,T对我的实际实体具有通用性。

现在,当数据库中没有任何Tfordate时,我希望它返回一个空流,其中没有任何项目。相反,它有一个null元素,它永远不会发生,因为T它不能为空。

我为它写了这个测试:

...它通过了,因为再次null返回了一件物品。

我错过了什么?这里有什么问题,因为我无法弄清楚。为什么我在具有不可为空元素的流中得到一个空元素?

0 投票
3 回答
1887 浏览

kotlin - Kotlin 协程流中 RxJava .toList() 的等价物

我有一种情况,我需要观察用户 ID,然后使用这些用户 ID 来观察用户。userIds 或 users 可以随时更改,我希望让发出的用户保持最新。这是我拥有的数据来源的示例:

在这种情况下,我希望排放量为:

[User(abc_name), User(def_name)], 然后

[User(123_name), User(234_name)], 然后

[User(123_name_updated), User(234_name_updated)]

我想我可以像这样在 RxJava 中实现这一点:

我会写什么函数来制作一个发出它的流?

0 投票
3 回答
2138 浏览

java - Kotlin Flows Java 互操作回调

当我想将 Kotlin Flows 与普通回调一起使用时,我一直在寻找合适的解决方案或最佳实践。我的用例是我编写了一个在内部使用 Kotlin Flow 的 kotlin 库,并且我必须假设用户将使用 Java。所以我认为最好的解决方案是将基本回调接口重载到我的流方法并以collect如下方式调用它:

在我的 Java 应用程序中,我可以像这样简单地使用它:

我不确定要走的路是什么,因为我想让我的 Kotlin 库使用 Flows 以良好的方式用于 Java 和 Kotlin。

我遇到过,callbackFlow但这似乎只有当我想称之为 flow-ify 一个基于回调的 API 时?因为我对 Kotlin 和 Flows 很陌生,如果我的问题因缺少 kotlin 的一些基本概念而存在缺陷,请道歉。

0 投票
2 回答
1532 浏览

kotlin - Kotlin 流排序

有没有办法按自定义顺序对流发出的集合进行排序,例如:

0 投票
1 回答
298 浏览

kotlin-coroutines - 创建类似于频道或广播频道的 Kotlin Coroutine 的流程实例

与频道和广播频道类似,流是否也可以在多个地方实例化和重用?

创建流的一般用法是包装逻辑以在流的主体内发出数据并返回。

片段:

每次调用 listenToDataChanges() 时,都会创建一个新的流实例并进行多个订阅。相反,是否可以创建和重用实例以避免多次订阅?

0 投票
1 回答
416 浏览

kotlin - 如何使用 Kotlin 协程抓取递归结构?

给定一个树状结构,以及一个获取节点子节点的操作,例如:

你知道实现具有签名的爬虫功能的蓝图吗

使用 Kotlin 协程返回树的所有节点?