为什么retryWhen
用其内部的Observable来完成?
想象一下,我们需要进行最多 3 次尝试来获取数据。而且,例如,我们的第三次尝试肯定会成功。因此,我尝试以下操作:
// ...
retryWhen(errors$ =>
errors$.pipe(
take(3)
)
)
将进行3次尝试,但在出现第3次错误后立即完成,以及其内部可观察到的内容。即使我们的第三次尝试即将给我们带来结果。
说明:
更新后的提示:可能是为了适当地限制重试次数,我们应该use switchMap
to switch based on index to of(error)
or to throwError(error)
。
对于我来说,这种行为是出乎意料的:因为尽管我能观察到内部情况,但只会触发重试。并且一旦通知重试-它的工作就完成了,我们不在乎它是否完成。
所以这个问题是理论上的,然后是实际的:
此特定行为背后的原因是什么?它有什么优势?
注意:这不是问题,操作员的行为符合说明
返回一个Observable,该Observable与源Observable镜像 错误的例外。如果源Observable调用错误,则此 方法将引发导致错误的Throwable发送给Observable 从通知程序返回。 该可观察呼叫是否完成或出错 那么此方法将在子级上调用complete或error 。否则,该方法将重新订阅源 可观察的。