Как я могу получить сообщение об ошибке из Http.Error?
Я пытаюсь выполнить упражнение в учебнике Elm 0.17 для HTTP. Если выборка gif не удалась, я хотел бы сообщить пользователю, почему она не сгенерирована с сообщением об ошибке.
Я изменил свою модель:
type alias Model =
{ topic : String
, gifUrl : String
, errorMessage : String
}
И получить сбой при обновлении:
FetchFail error ->
(Model model.topic model.gifUrl (errorMessage error), Cmd.none)
Где функция errorMessage
выглядит следующим образом:
errorMessage : Http.Error -> String
errorMessage error =
case error of
Http.Timeout ->
"Timeout"
Http.NetworkError ->
"Network Error"
Http.UnexpectedPayload _ ->
"UnexpectedPayload"
Http.BadResponse _ _ ->
"BadResponse"
Вышеуказанная функция кажется мне ненужной котельной. Есть ли способ, с помощью которого я могу напрямую преобразовать Http.Error
в строку?
Ответы
Ответ 1
Вы можете преобразовать что угодно в строку, используя toString
. Это даст вам почти тот же результат, что и ваши аргументы case:
toString Timeout == "Timeout"
toString NetworkError == "NetworkError"
toString (UnexpectedPayload "Error") == "UnexpectedPayload \"Error\""
toString (BadResponse 500 "Error") == "BadResponse 500 \"Error\""
Просто замените вызов на errorMessage
на toString
и вы можете полностью избавиться от errorMessage
:
FetchFail error ->
(Model model.topic model.gifUrl (toString error), Cmd.none)