1

我们正在学习 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 信号/端口/StartApp 相关的一些基本内容?

4

1 回答 1

0

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

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

-> 在从 audio.js 中删除 Elm.worker 的东西并将 audio.js 插入到 index.html 的端口实现之后,事情得到了修复。

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

于 2016-04-01T07:45:57.853 回答