我们正在学习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的端口实现后,事情就解决了。
(这可能不是一个完美的/最终的解决方案,但解决了我们当前设置的问题)