我想根据Reactive Extensions Observable提出的每个事件执行异步调用。我也试图让所有内容保持同步,因为我希望在处理下一个事件之前完成异步调用。
如何进行类似以下的操作?我说类似,因为下面的代码无法编译。
settingsChangedInMemory
.Subscribe(async _ => {
var settings = Extract();
await SaveSettings(settings);
});
我不确定它是否会改变任何东西,但我需要订阅多个Observable。例如,像这样的另一个订阅。
settingsChangedOnDisk
.Subscribe(async _ => {
var settings = await ReadSettings(settings);
Apply(settings);
});
您如何使用Reactive Extensions执行此操作?
答案 0 :(得分:16)
怎么样:
settingsChangedInMemory
.SelectMany(async _ => await SaveSettings(Extract()))
.Subscribe(x => Apply(x));
永远不要将async
放在Subscribe
中,而是始终要将其放在SelectMany
中。
答案 1 :(得分:1)