gpt4 book ai didi

F# Reactive 等待 Observable 完成

转载 作者:行者123 更新时间:2023-12-03 14:11:45 25 4
gpt4 key购买 nike

我在这方面发现了各种 SO 问题,但找不到 F# 解决方案。我需要阻止等待一个事件向我触发以检查它返回的数据。我使用 Rx 接收事件 3 次:

let disposable =
Observable.take 3 ackNack
|> Observable.subscribe (
fun (sender, data) ->
Console.WriteLine("{0}", data.AckNack)
Assert.True(data.TotalAckCount > 0u)
)

我想将结果转换为列表,以便稍后由测试框架 (xUnit) 检查它们,或者等待所有 3 个事件完成并通过 Assert.True .

在继续之前,我将如何等待 3 个事件触发?我可以看到有一个 Observable.wait其他来源建议 Async.RunSynchronously .

最佳答案

我认为最简单的选择是使用 Async.AwaitObservable函数 - 遗憾的是,这在 F# 核心库中尚不可用,但您可以从 FSharpx.Async 包中获取它,或者只需复制 function soruce from GitHub .

使用该函数,您应该能够编写如下内容:

let _, data = 
Observable.take 3 ackNack
|> Async.AwaitObservable
|> Async.RunSynchronously

Console.WriteLine("{0}", data.AckNack)
Assert.True(data.TotalAckCount > 0u)

关于F# Reactive 等待 Observable 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com