2009-12-16 106 views
1

下面是下一個實際問題。haskell chuncked http閱讀

我想從http服務器(數據庫更新)下載一些大文件。此操作應阻止用戶UI,防止他輸入數據。所以問題是要顯示用戶進度條,這將告訴他還有多少要等待。

在python中,請求對象打開文件類對象。我已經通過卡盤閱讀並通過回調函數向GUI報告。

如何在haskell中實現相同?如何獲得當前下載的大小並報告?

回答

1

在Haskell中,您可以像python版本那樣做,但細節取決於您使用的GUI庫。

有一些關於如何檢測已經到達的輸入的選項。一種方法是使用惰性IO。那麼你通常會得到一個字符串作爲結果,這是隨着數據到來而延遲構建的。然後,您可以編寫遍歷列表的IO函數,並在用戶界面更新時更新UI。這可能是一個非常方便的方法,但惰性IO往往非常脆弱,因此請謹慎使用它。

另一個選擇是使用一些接口,它可以在它們到達時提供對塊的訪問。我對這樣的圖書館沒有任何個人經驗,但HTTP圖書館似乎支持,在基本模塊。

爲了跟蹤進度,在MissingH庫中有一個很好的模塊:Data.Progress.Tracker

如果您提供有關您的特定場景的更多詳細信息,則可以進一步評論。

祝你好運。

+0

你的回答看起來像是「使用源碼,Luk」。這是我不想自己做的。 我接受你的答案,但把-1,因爲,我仍然需要通過消息來源。稍後我會(也許)在這裏發佈我搜索的內容。 – 2009-12-17 05:37:37

+0

但是,鑑於您對問題的模糊描述,很難準確顯示如何執行此操作。正如我所說,如果你提供一些更具體的細節,可以給出更有幫助的答案。 – svenningsson 2009-12-17 14:02:00