【发布时间】:2014-11-29 21:10:49
【问题描述】:
我正在尝试通过从我的数据源递归读取数据来生成切片序列。
let rec read stream startFrom (conn : IEventStoreConnection) =
seq {
let size = 10000
let slice = conn.ReadStreamEventsForwardAsync(stream, startFrom, size, true).Result
Console.WriteLine("Events in slice: " + slice.Events.Count().ToString())
if (slice.IsEndOfStream) then
yield slice
else
yield! read stream (startFrom + 1 * size) conn
}
let slices = read "stream-name" 0 conn
Console.WriteLine("TOTAL slices in sequence: " + (Seq.length slices).ToString());
我期待序列包含三个项目,但它似乎只返回一个,最后一个。
Events in slice: 10000
Events in slice: 10000
Events in slice: 4501
TOTAL slices in sequence: 1
为什么我的递归调用的结果也没有产生?范围界定的事情?
【问题讨论】:
-
所以想想会发生什么 - 如果你不在流的末尾,你递归直到你在末尾。只有流的末尾才会真正返回一些东西。