榆树 0.16 到 0.18 Http.get?

Elm 0.16 to 0.18 Http.get?

我一直在尝试将我的 Elm 0.16 代码转换为 0.18。但是我似乎无法得到我必须工作的Http.get。

旧代码是:

fetch : Decoder a -> String -> (Result Http.Error a -> b) -> Effects b --Effects became Cmd in 0.17
fetch decoder url action =
    Http.get decoder url
    |> Task.toResult
    |> Task.map action
    |> Effects.task

但是 Task.toResult 已经不存在了。 我发现了一个 google groups conversation 说我必须转换

task |> Task.toResult |> Task.map action |> Effects.task

task |> Task.toResult |> Task.perform never action

但后来我仍然收到“Task 不暴露 toResult”错误,因为在 0.18 中他们删除了它似乎。

我该如何解决这个问题?我试过在网上搜索,但发现一切都很混乱而且不是很有用。

您只需要为您的 fetch 函数使用 Http.get and Http.send

fetch : Decoder a -> String -> (Result Http.Error a -> b) -> Cmd b
fetch decoder url action =
    Http.get url decoder
        |> Http.send action

从 0.16 开始,Http 包不要求您在发送请求之前使用中间 Task。如果需要,您仍然可以使用 Http.toTask 将请求转换为 Task,以防您想将多个请求链接在一起。