Elm输出端口无法使用从StartApp派生的信号



我们正在学习Elm基础知识,并通过以下设置构建一个带有音频输出的简单应用程序:

  • 我们正在使用Elm的StartApp
  • 我们有一些带有POC音频逻辑(和console.log)的ports/audio.js
  • ATM我们正在使用elm-live来运行应用程序

使用从Time.every派生的信号,端口就可以工作(ports/audio.js中的代码运行)。此外,我们使用Debug.log 获取"ping"日志

port audio : Signal Int
port audio =
  Signal.map (always 400) (Time.every Time.second)
  |> Signal.map (Debug.log "ping")

然而,当我们使用从StartApp的App.model派生的信号时,我们会得到一个信号(因为记录了带有Debug.log的"ping"日志),但到JS的端口不起作用(ports/audio.JS中的代码没有运行)?

port audio : Signal Int
port audio =
  Signal.map (always 400) signalDerivedFromStartApp
  |> Signal.map (Debug.log "ping")

这可能是与Elm signals/ports/StartApp相关的一些基本内容?

我们的专家朋友发现了问题:我们的设置被破坏了,因为我们在两个地方使用了Elm.main

  • ports/audio.js具有Elm.worker(Elm.Main, {});
  • index.html有Elm.fullscreen(Elm.Main)脚本

->在从audio.js中删除Elm.worker的东西并将audio.jsp插入index.html的端口实现后,事情就解决了。

(这可能不是一个完美的/最终的解决方案,但解决了我们当前设置的问题)

相关内容

  • 没有找到相关文章

最新更新