在二极管效应中处理 Future.failure
Handling of Future.failure in a Diode effect
在 Diode 中,如何处理 Future.failure 效果?
文档(https://ochrons.github.io/diode/usage/Effects.html)清楚地说明了如何使用 Ajax 调用的成功值来使用 Pot.Ready 更新模型,但我想知道如何捕捉失败并进行更新取而代之的是 Pot.Failed。
对于普通效果,您需要使用 map
和 recover
的组合将成功的 Future
和失败的 Future
转换为合适的动作。例如:
val eff = Effect(Ajax.get(url)
.map(r => NewMessages(r.responseText)))
.recover { case e => MessageLoadingFailed(e.getMessage) }
)
如果您正在使用 AsyncAction
(或派生的 PotAction
),它会提供一个辅助方法 effect
,自动处理未来的失败并创建一个 PotFailed
状态。
在 Diode 中,如何处理 Future.failure 效果? 文档(https://ochrons.github.io/diode/usage/Effects.html)清楚地说明了如何使用 Ajax 调用的成功值来使用 Pot.Ready 更新模型,但我想知道如何捕捉失败并进行更新取而代之的是 Pot.Failed。
对于普通效果,您需要使用 map
和 recover
的组合将成功的 Future
和失败的 Future
转换为合适的动作。例如:
val eff = Effect(Ajax.get(url)
.map(r => NewMessages(r.responseText)))
.recover { case e => MessageLoadingFailed(e.getMessage) }
)
如果您正在使用 AsyncAction
(或派生的 PotAction
),它会提供一个辅助方法 effect
,自动处理未来的失败并创建一个 PotFailed
状态。