2013-07-25 35 views
4

我正在玩一個小型的網絡服務器,我正在實施一個版本使用async包,一個同步版本在單獨的隔離執行每個請求。我想簡單地將文件流傳輸到HttpResponse,但我不能同步執行此操作。我找不到同時等待StreamFuture的方法。我現在使用的是RandomAccessFile,它可以工作,但它變得更加混亂。同步等待未來或流在飛鏢中完成

一個解決方案是執行週期性定時器以檢查未來是否完成(通過設置布爾值或類似值),但這絕對不是我想使用的。

有沒有辦法同步等待FutureStream?如果不是,爲什麼?

回答

1

AFAIK沒有辦法同步等待Future或Stream。爲什麼?因爲這些定義非常異步,並且正如您發現的那樣,API的設計考慮到了異步行爲。

有幾個Future構造函數,Future.value()Future.sync(),立即執行,但我不認爲這些可能是你想到的。

+2

確定它們是異步的,但如果我想在單獨的隔離中使用流,那麼有充足的理由等待完成。異步代碼只是更復雜。考慮到提供的API,飛鏢隊希望爲同步編程提供良好的基礎。一個簡單的'T get({timeout:Duration})'將在未來的案例中做到。流將需要更多。因此,說它們按定義是異步的並不能解釋它。 –

+0

「異步代碼更簡單」 - 完全同意。有時你只需要等待一些事情完成後再繼續。 – DataMania

+0

我想我在討論這個計劃,但需要一些時間。另請參閱https://code.google.com/p/dart/issues/detail?id=104 –