gpt4 book ai didi

.net - 同步多个可观察流

转载 作者:行者123 更新时间:2023-12-04 05:26:46 24 4
gpt4 key购买 nike

我是 Reactive Extensions 的新手,所以这可能是一个新手问题,但我有以下情况:

我从数据库中获取 3 个 IEnumerable 列表(不同类型)并填充一个 View 模型。但是,我想协调订阅以在所有列表都完成加载时触发某些内容。这可以通过 Reactive Extensions 实现还是我的想法错误?代码看起来像这样:

GetCustomers()
.ToObservable(Scheduler.Default)
.Buffer(20).ObserveOn(SynchronizationContext.Current)
.Subscribe(View.Model.AddRange);
GetCountries()
.ToObservable(Scheduler.Default)
.Buffer(20).ObserveOn(SynchronizationContext.Current)
.Subscribe(View.Model.AddRange);
GetTransports()
.ToObservable(Scheduler.Default)
.Buffer(20).ObserveOn(SynchronizationContext.Current)
.Subscribe(View.Model.AddRange);

最佳答案

您可以尝试使用可观察的连接。像这样的东西:

var plan =
Observable.Start(() => GetCountries())
.And(Observable.Start(() => GetCustomers()))
.And(Observable.Start(() => GetTransports()))
.Then((countries, customers, transports)
=> new { countries, customers, transports });

var query =
Observable.When(new [] { plan });

query
.Subscribe(cct =>
{
View.Model.AddRange(cct.countries);
View.Model.AddRange(cct.customers);
View.Model.AddRange(cct.transports);
});

它并行运行,最后您将所有结果合二为一。

关于.net - 同步多个可观察流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123519/

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