如何去掉一个Aff(类似Eff的unsafePerformEff)?
How to remove a Aff (similar to Eff's unsafePerformEff)?
我正在尝试获取通过 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"
谢谢
您永远不应该尝试使用 unsafePerformEff
来 "get at" 值,因为这样确实不安全,并且会在任何更大的代码库中引入严重的错误。
相反,您可以使用 do
符号来 "get at" 值。例如:
do
result <- attempt $ readTextFile Node.Encoding.UTF8
case result of
Left error -> ...
Right file -> ...
...
请注意,不存在 unsafePerformAff
,因为计算是异步的,无法在 Javascript 运行时中阻塞。
我正在尝试获取通过 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"
谢谢
您永远不应该尝试使用 unsafePerformEff
来 "get at" 值,因为这样确实不安全,并且会在任何更大的代码库中引入严重的错误。
相反,您可以使用 do
符号来 "get at" 值。例如:
do
result <- attempt $ readTextFile Node.Encoding.UTF8
case result of
Left error -> ...
Right file -> ...
...
请注意,不存在 unsafePerformAff
,因为计算是异步的,无法在 Javascript 运行时中阻塞。