【发布时间】:2022-01-26 13:47:46
【问题描述】:
我正在实现一个带有 AsyncSequence 的 find 方法,它的声明类似于
find(text: String) -> AsyncThrowingStream<[Widgets], Error>
方法实现会查询多个来源,并且 UI 会随着结果的增加而更新。如果其中一个来源抛出错误,我想处理它并使用剩余结果更新 UI。
我正在使用 for-try-await 执行此操作,但我不确定如何处理异常。使用下面的代码,在捕获异常后迭代停止(除了查看代码,我只是不确定如何使用 for-try-await 语法处理异常,例如迭代继续)。
var results = [Widgets]()
do {
for try await items in asyncStream {
results.append(contentsOf: items)
}
} catch let error {
// handle error
}
如何在不取消迭代的情况下处理异常?例如。在 asyncStream 中有 3 个项目产生 throws Error, A, B,result 将是 [A, B]
谢谢!
【问题讨论】:
标签: swift async-await