我试图通过Node.FS.Aff.readTextFile获取我从文件中读取的一些文件内容,以便使用异步效果。
但是我的问题更为笼统。
myFile::forall r. String -> Aff ( fs :: FS | r) (Either Error String)
myFile file = attempt $ readTextFile Node.Encoding.UTF8 file
所以我希望获得Left
或Right
值。如果它在Eff
而不是Aff
我可以使用
let x = unsafePerformEff $ myFile "someFile.txt"
由于
答案 0 :(得分:5)
你永远不应该试着去"使用unsafePerformEff
的值是非常不安全的,并且会在任何更大的代码库中引入严重的错误。
相反,您可以使用do
符号来"得到"价值。例如:
do
result <- attempt $ readTextFile Node.Encoding.UTF8
case result of
Left error -> ...
Right file -> ...
...
请注意,不存在unsafePerformAff
,因为计算是异步的,并且无法在Javascript运行时中阻止。