作为Shane Neuville的反应,我正在改变我的问题。但是,是的。它可能比我原先想象的要复杂得多。
我有一个ReactiveList<ServiceEntryModel> Services;
将在视图出现时填充。对于列表中的每个条目,我使用了名为Services.ItemsAdded.Subscribe()
的函数,其中RxCell将填充整个列表末尾应以特定方式排序的数据。截至目前,我有两个独立的ReactiveCommands。
1.ReactiveCommand<Unit, List<ServiceEntryModel>> RefreshServices;
2.ReactiveCommand<Unit, List<ServiceEntryModel>> OrderByCommand;
当从Services.ItemsAdded.Subscribe方法填充整个列表时,应调用第二个命令。如何查看/知道每个条目何时完成?
我尝试了一些带有计数器和ObservablePropertyHelpers的东西,但到目前为止没有运气。
这是我应该相关的ViewModel部分
Services.ItemsAdded.Subscribe(async entryItem =>
{
ServiceEntityStatusDto serviceEntityStatus = await GetServiceEntryStatus(entryItem);
if (serviceEntityStatus != null)
{
entryItem.AvailabilityStatus = serviceEntityStatus.AvailabilityStatus;
entryItem.PerformanceStatus = serviceEntityStatus.PerformanceStatus;
}
counterServices++;
//await OrderServices.Execute(); //TODO infinite loop ?
});
评论的部分是一个无限循环,因为将继续调用Services.ItemsAdded。
用户可以拉到刷新状态,然后再次调用第一个命令,这样就完成了。秒应该再次排序整个列表。
答案 0 :(得分:0)
这够了吗?
RefreshServices
.SelectMany(_ => OrderServices.Execute())
.Subscribe();
或InvokeCommand语法
RefreshServices
.InvokeCommand(OrderServices);
与InvokeCommand OrderServices的区别是,如果它已经在执行,那么它可能不适合您的用例。例如,当OrderServices仍在运行时,RefreshServices可以再次执行。