Обработка Future.failure в эффекте диода
В Диоде, как можно справиться с Future.failure в результате? В документе ( https://ochrons.github.io/diode/usage/Effects.html) ясно, как значение успеха из вызова Ajax используется для обновления модели с помощью Pot.Ready, но мне интересно, как это сделать? может поймать ошибку и обновить Pot.Failed вместо этого.
1 ответ
Решение
С простыми эффектами, вы должны преобразовать оба успешных Future
и не удалось Future
в подходящее действие, используя комбинацию map
а также recover
, Например:
val eff = Effect(Ajax.get(url)
.map(r => NewMessages(r.responseText)))
.recover { case e => MessageLoadingFailed(e.getMessage) }
)
Если вы используете AsyncAction
(или производная PotAction
) это обеспечивает вспомогательный метод effect
который автоматически обрабатывает будущие ошибки и создает PotFailed
государство.