Cmd без сообщения в Elm

Можно ли создать Cmd, который не отправляет сообщение о завершении в Elm?

В частности, я пытаюсь получить фокус элемента (программно), но мне не нужно получать информацию о результате:

Dom.focus "element-id"
    |> Task.attempt FocusReceived
...
FocusReceived result ->
    model ! []  -- result ignored

Есть ли способ просто заставить «движок» Elm не отправлять сообщение после этого Cmd?

Я знаю, что мой код (FocusReceived result -> model ! []) не работает, но я бы хотел, чтобы сообщение вообще не отправлялось.


person Ralph    schedule 21.01.2018    source источник


Ответы (1)


Нет, всегда требуется Msg. В типичных проектах Elm принято включать конструктор типа Msg, который ничего не делает с именем NoOp.

type Msg
    = NoOp
    | ...

Функция update делает то же, что и FocusReceived в вашем примере, а именно ничего.

case msg of
    NoOp ->
        model ! []
    ...
person Chad Gilbert    schedule 21.01.2018
comment
Вот что я подозревал. В моем случае основная функция update также запускает команду для сохранения состояния во внешнем хранилище, поэтому мне нужен способ игнорировать команды, которые не влияют на состояние. Спасибо. - person Ralph; 21.01.2018