带有超时结果的 Kotlin Flow

问题描述 投票:0回答:1

我正在尝试在 CoroutineWorker (WorkManager) 中使用 Flow,并且该流应该侦听存储库中的值 5 秒,如果您在该时间范围内获取该值,则返回

Result.success()
,然后忽略/取消计时器,如果时间过去了,您就返回
Result.failure()

现在我有类似的东西,我正在尝试将超时纳入其中。

 repository.getListeningValue.onEach {
     //doStuff here with the result
 }.map{
     Result.success()
 }.first()
android kotlin kotlin-coroutines android-workmanager kotlin-flow
1个回答
10
投票

我会尝试这样的事情:

withTimeoutOrNull(5_000) {
    flow.first()
    Result.success()
} ?: Result.failure()

我自己没有尝试过,但我认为应该有用。

© www.soinside.com 2019 - 2024. All rights reserved.