也许出站端口不支持任务?

时间:2015-08-03 02:13:38

标签: elm maybe

我似乎得到了这个错误

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 ())

我很困惑这里发生了什么。

1 个答案:

答案 0 :(得分:5)

有两种方法可以使用port

  1. 将数据发送到JavaScript,您可以在其中编写自己的处理程序来处理它。这仅限于subset of data,可轻松转换为JS值。
  2. Task发送到要安排执行的运行时。
  3. 在这种情况下,您的Maybe周围有数据(Task),因此编译器假设(错误地*)您希望将端口用于#1目的。

    如果您要执行TaskJust所包含的Signal并且Nothing上的Signal上不执行任何操作,则可以过滤掉Nothing并使用Signal.Extra.filterJust打开Signal.filterMap identity

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

    *您能否将此错误消息报告给error message catalog?此消息可能会更好,因为它可以根据您尝试发送的数据类型中的Task来猜测您的意图。