我一直在玩purescript和信号。我有一个代码块runSignal在浏览器中工作,但不在节点控制台上
runSignal $ (every 2000.0) ~> logShow
,当作为
main = do
runSignal $ (every 2000.0) ~> logShow
编译成JS文件(纸浆browserify),并在浏览器上执行,按预期工作(原木的东西每2秒),但卡在psci控制台上。这是为什么?任何帮助,将不胜感激。
我一直在玩purescript和信号。我有一个代码块runSignal在浏览器中工作,但不在节点控制台上
runSignal $ (every 2000.0) ~> logShow
,当作为
main = do
runSignal $ (every 2000.0) ~> logShow
编译成JS文件(纸浆browserify),并在浏览器上执行,按预期工作(原木的东西每2秒),但卡在psci控制台上。这是为什么?任何帮助,将不胜感激。
PSCI有两种模式:
--port
选项)。在这种模式下,它将JS的片段发送到长时间运行的浏览器进程。在第一种模式下,runSignal
是不会做任何有趣的,因为它会启动一个定时器并立即返回,但你也许可以得到一些使用第二模式容易的工作。
我见过类似的行为与psci中的无休止的过程。一个简单的例子是...
module NeverEnding where
import Prelude
import Control.Monad.Eff.Console (log)
import Control.Monad.Rec.Class (forever)
main = forever $ do
log "log"
如果您在PSCI装载该模块和运行main
,你不会看到任何输出。从工作流的角度来看,如果你想从控制台测试这样的东西,我建议运行pulp --watch run --main NeverEnding
。 --main
会将您想要的模块设置为主入口点。 --watch
将监视文件更改,并在更改时杀死无处不在的进程,重新编译并重新启动。
谢谢菲尔。但是下一个psci提示符在运行这行时甚至没有显示。它被卡住了,我必须做一个^ C来打断它。这是等待这个表达式结果的节点进程同步运行的结果吗? –
是的,没错。 –