Может быть, задача не поддерживается на исходящих портах?

Кажется, я получаю эту ошибку

Trying to send an unsupported type through outbound port `projectRequests`

    port projectRequests : Signal (Maybe (Task String ()))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The specific unsupported type is:

   Task.Task String ()

The types of values that can flow through outbound ports include: Ints, Floats, Bools, Strings, Maybes, Lists, Arrays, Tuples, Json.Values, and concrete records.

Однако это, кажется, хорошо

port orgRequests : Signal (Task String ())

Я в замешательстве от того, что здесь происходит.


person Surya    schedule 03.08.2015    source источник


Ответы (1)


Существует два способа использования порта:

  1. Отправляйте данные в JavaScript, где вы пишете свой собственный обработчик для их обработки. Это ограничено подмножеством данных, которые можно легко преобразовать. к значениям JS.
  2. Отправьте Tasks в среду выполнения для планирования выполнения.

В этом случае у вас есть данные (Maybe), обернутые вокруг вашего Task, поэтому компилятор предполагает (ошибочно*), что вы хотите использовать порт для цели №1.

Если вы хотите выполнить Task, завернутые в Just, на Signal и ничего не делать с Nothing на Signal, вы можете отфильтровать Nothing и развернуть Just с помощью Signal.Extra.filter или Signal.filterMap identity:

port projectRequests : Signal (Maybe (Task String ()))
port projectRequests = Signal.filterMap identity -- and then whatever you had here before

*Можете ли вы сообщить об этом сообщении об ошибке в каталог сообщений об ошибках? Это сообщение может быть лучше, так как оно может угадать ваши намерения по Task в типе данных, которые вы пытаетесь отправить.

person Apanatshka    schedule 03.08.2015