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

Sur*_*rya 1 maybe elm

我似乎得到了这个错误

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.
Run Code Online (Sandbox Code Playgroud)

然而,这似乎没问题

port orgRequests : Signal (Task String ())
Run Code Online (Sandbox Code Playgroud)

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

Apa*_*hka 5

您可以通过两种方式使用端口:

  1. 将数据发送到JavaScript,您可以在其中编写自己的处理程序来处理它.这仅限于可以轻松转换为JS值的数据子集.
  2. Tasks 发送到要安排执行的运行时.

在这种情况下,你有数据(Maybe)缠绕在你的周围Task,所以编译器假定(错误的*)你想要使用端口#1.

如果要执行Task包裹s中Just的S Signal和做一个什么NothingSignal,你可以过滤掉Nothing,并在解开JustSignal.Extra.filterSignal.filterMap identity:

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

*您能否将此错误消息报告给错误消息目录?这条消息可能会更好,因为它可以根据您Task尝试发送的数据类型来猜测您的意图.