我一直在玩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來打斷它。這是等待這個表達式結果的節點進程同步運行的結果嗎? –
是的,沒錯。 –