我想针对响应式扩展 Observable 引发的每个事件 执行异步调用。我还试图使所有内容保持同步,因为我希望在处理下一个事件之前完成异步调用。
如何做类似于以下的事情?我说类似是因为下面的代码无法编译。
settingsChangedInMemory
.Subscribe(async _ => {
var settings = Extract();
await SaveSettings(settings);
});
我不确定它是否改变了什么,但我需要订阅多个 Observable。例如另一个像这样的订阅。
settingsChangedOnDisk
.Subscribe(async _ => {
var settings = await ReadSettings(settings);
Apply(settings);
});
您将如何使用 Reactive Extensions 来做到这一点?
最佳答案
怎么样:
settingsChangedInMemory
.SelectMany(async _ => await SaveSettings(Extract()))
.Subscribe(x => Apply(x));
永远不要将 async
放在 Subscribe
中,您总是希望将它放在 SelectMany
中。
关于c# - 响应式扩展订阅调用等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843000/