最近在探索 Kotlin Flows 时,我尝试实现一个功能,我想在其中运行 10 个任务作为 Flows 的一部分。 我无法弄清楚的一件事是如何处理异常并重试单个任务。
这是相同的示例伪代码。
{
"file": "plugins/cordova-plugin-file/www/requestFileSystem.js",
"id": "cordova-plugin-file.requestFileSystem",
"pluginId": "cordova-plugin-file",
"clobbers": [
"window.requestFileSystem"
]
}
现在我关注的是如何为可能失败的操作之一添加重试机制。而不是要重新启动整个流程。
我看到可以使用 listOfOperations.asFlow().map {
// Do request here (this would throw exception for some operations
}.collect {
// Do something with output
}
。但这最终重新启动了整个流程。
答案 0 :(得分:0)
假设 listOfOperations
是一些输入数据列表...为什么不创建“子流”,使用 retry
然后将结果流展平?
listOf("a", "b").asFlow().map { data ->
flow {
emit(someOperation(data)
}.retry(3)
}.flattenConcat()