Elm 输出端口无法使用从 StartApp 派生的信号
Elm output port is not working with a signal derived from StartApp
我们正在学习 Elm 基础知识,并使用以下设置构建一个带有一些音频输出的简单应用程序:
- 我们正在使用 Elm 的 StartApp。
- 我们有 ports/audio.js 和一些 POC 音频逻辑(和 console.log)。
- 我们正在使用 ATM elm-live 到 运行 应用程序。
使用来自 Time.every 的信号,端口工作(ports/audio.js 中的代码是 运行)。此外,我们得到 "ping" 日志 Debug.log.
port audio : Signal Int
port audio =
Signal.map (always 400) (Time.every Time.second)
|> Signal.map (Debug.log "ping")
但是,当我们使用从 StartApp 的 App.model 派生的信号时,我们会得到一个信号(因为 "ping" 日志和 Debug.log 被记录)但是 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.js 插入 index.html 的端口实现后,内容已修复。
(这可能不是针对此案例的 perfect/final 解决方案,但已解决我们当前设置的问题)
我们正在学习 Elm 基础知识,并使用以下设置构建一个带有一些音频输出的简单应用程序:
- 我们正在使用 Elm 的 StartApp。
- 我们有 ports/audio.js 和一些 POC 音频逻辑(和 console.log)。
- 我们正在使用 ATM elm-live 到 运行 应用程序。
使用来自 Time.every 的信号,端口工作(ports/audio.js 中的代码是 运行)。此外,我们得到 "ping" 日志 Debug.log.
port audio : Signal Int
port audio =
Signal.map (always 400) (Time.every Time.second)
|> Signal.map (Debug.log "ping")
但是,当我们使用从 StartApp 的 App.model 派生的信号时,我们会得到一个信号(因为 "ping" 日志和 Debug.log 被记录)但是 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.js 插入 index.html 的端口实现后,内容已修复。
(这可能不是针对此案例的 perfect/final 解决方案,但已解决我们当前设置的问题)