首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elm StartApp解码http请求

Elm StartApp解码http请求
EN

Stack Overflow用户
提问于 2016-03-11 10:38:05
回答 1查看 233关注 0票数 3

我正试图以pokéapi为基础,用Elm对http请求进行解码。虽然我遇到了一个错误,但我真的不知道如何修复:

代码语言:javascript
复制
The right argument of (|>) is causing a type mismatch.

76│     Http.getString testUrl
77│     |> Task.map parseMon
78│>    |> Task.map OnPokemonLoaded

(|>) is expecting the right argument to be a:

    Task Http.Error (Result String Pokemon) -> a

But the right argument is:

    Task Http.Error (Result Http.Error Pokemon) -> Task Http.Error Action

它所说的代码是:

代码语言:javascript
复制
-- Fetching test mon
testUrl : String
testUrl = "http://pokeapi.co/api/v2/pokemon/1/"


fetchTest : Effects.Effects Action
fetchTest =
    Http.getString testUrl
    |> Task.map parseMon
    |> Task.map OnPokemonLoaded --line 78
    |> Effects.task

parseMon : String -> Result String Pokemon.Pokemon
parseMon json = Json.Decode.decodeString Pokemon.decoder json

OnPokemonLoaded是我的行为之一:OnPokemonLoaded (Result Http.Error Pokemon)Pokemon.decoder是一个简单的json解码器:decoder : Decoder Pokemon

我对埃尔姆还是新手,只是尝试了StartApp和特效。这个错误似乎很好地解释了这个问题,但我仍然有点不明白它应该如何工作。

那么,我应该如何正确地请求和解码json呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 12:36:29

没有必要使用Http.getStringparseMon。相反,您可以使用Http.get并传递您的Json解码器,然后将其映射到Result以获得您想要的功能:

代码语言:javascript
复制
fetchTest : Effects.Effects Action
fetchTest =
  Http.get Pokemon.decoder testUrl
    |> Task.toResult
    |> Task.map OnPokemonLoaded
    |> Effects.task
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35937972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档