响应式扩展——只在集合上逐个执行函数



有没有办法强制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将所有内容合并在一起,保证每次只运行一个项,从而保持流的原始顺序。

相关内容

  • 没有找到相关文章

最新更新