在二极管效应中处理 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。

对于普通效果,您需要使用 maprecover 的组合将成功的 Future 和失败的 Future 转换为合适的动作。例如:

val eff = Effect(Ajax.get(url)
  .map(r => NewMessages(r.responseText)))
  .recover { case e => MessageLoadingFailed(e.getMessage) }
)

如果您正在使用 AsyncAction(或派生的 PotAction),它会提供一个辅助方法 effect,自动处理未来的失败并创建一个 PotFailed 状态。