假设我有这段代码:
import qualified Data.ByteString as B
main = do
... --some code that gets an array of ByteStrings called "files"
putStrLn "Saving myFile1"
B.writeFile "myFile1.bin" $ files!!0
putStrLn "Saving myFile2"
B.writeFile "myFile2.bin" $ files!!1
putStrLn "Done!"
不是在后续文件写入之前打印出每个字符串,而是在保存文件后似乎立即打印出所有内容。这种功能不方便通知用户进度,因为他们只有在完成所有文件写入后才会收到这些消息。
我的代码显然不是那么糟糕(我使用sequence
的函数列表)但这很好地说明了问题。有什么我做错了,或者这是不可能的?
答案 0 :(得分:0)
就像@WillemVanOnsem所说,这是一个缓冲问题。您可以在每次打印后手动刷新缓冲区,也可以change the buffering mode entirely。
columns.Bound(p => p.UploadDate).ClientTemplate("#=kendo.toString(kendo.parseDate(UploadDate), 'MM/dd/yyyy HH:mm:ss')#");
或
import System.IO
import qualified Data.ByteString as B
main = do
... --some code that gets an array of ByteStrings called "files"
putStrLn "Saving myFile1"
hFlush stdout
B.writeFile "myFile1.bin" $ files!!0
putStrLn "Saving myFile2"
hFlush stdout
B.writeFile "myFile2.bin" $ files!!1
putStrLn "Done!"
hFlush stdout