有没有办法强制Observable中的代码块?开始逐个执行元素?
只是为了清楚,例如,当它结束索引0时,它将在索引1上执行,以此类推…
public void Click()
{
this.strings.ToObservable().Subscribe(
x =>
{
Observable.Start(
() =>
{
//long operation
BarValue++;
});
});
}
给你:
this.strings.ToObservable()
.Select(x => Observable.Defer(() => Observable.Start(() => { /* ... */ })))
.Concat();
我们将每个字符串选择到一个可观察对象中,当订阅时,它将启动一个任务并做一些工作(即不像调用可观察对象那样立即发生工作)。这就是为什么我们需要Defer来阻止Start方法的启动)。
然后,我们通过Concat将所有内容合并在一起,保证每次只运行一个项,从而保持流的原始顺序。