gpt4 book ai didi

local-storage - 如何从(任务字符串值)中获取值?

转载 作者:行者123 更新时间:2023-12-04 23:37:38 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从 localstorage 加载 json:

let 
val = Storage.getItem "exercises" decodeExerciseList
in
({ model | exercises = val }, Cmd.none)

但我收到此错误:
本次第 5 和第 6 分支 case产生不同类型的值。 - 第 5 个分支具有这种类型:
( Model, Cmd Msg )

但第 6 个是:
( { exercise : Maybe Model.Exercise
, exercises : Task String (List Model.Exercise)
}
, Cmd msg
)

我想也许这会有所帮助:
case val of
succeed -> ({ model | exercises = val }, Cmd.none)
fail -> ({model | exercises = []}, Cmd.none)

但没有运气。在这种情况下,我遇到了另一个错误:

这个 case的第一和第二分支产生不同类型的值。 - 第一个分支有这种类型:
( { ..., exercises : Task String (List Model.Exercise) }, Cmd msg )

但第二个是:
( { ..., exercises : List a }, Cmd msg )

所以基本上我仍然遇到任务字符串 X 而不仅仅是 X 的问题。

知道在这里做什么吗?

最佳答案

尽管本地存储在 javascript 中是同步访问的,但这种访问仍然是不纯的,因此如您所见,在 Elm 中使用任务进行处理。

所以你的代码需要分两个阶段工作
- 启动任务
- 使用返回的结果

类似于以下内容

type Msg 
= LoadFromStorage
| OnLocalStorage (Result String (List Model.Exercise))

update message model =
case message of
LoadLocalStorage ->
( model
, Storage.getItem "exercises" decodeExerciseList
|> Task.attempt OnLocalStorage
)
OnLocalStorage res ->
case res of
Ok val ->
({ model | exercises = val }, Cmd.none)
Err err ->
handle error

关于local-storage - 如何从(任务字符串值)中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48724701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com