Rx中是否有等效的Task.ContinueWith运算符?

fos*_*son 4 c# system.reactive

Rx中是否有等效的Task.ContinueWith运算符?

我正在使用Rx和Silverlight,我使用FromAsyncPattern方法进行两次webservice调用,我想同步执行它们.

        var o1 = Observable.FromAsyncPattern<int, string>(client.BeginGetData, client.EndGetData);
        var o2 = Observable.FromAsyncPattern<int, string>(client.BeginGetData, client.EndGetData);
Run Code Online (Sandbox Code Playgroud)

是否只有在 o1返回Completed 才会启动/订阅o2的运算符(如Zip)?
我以同样的方式处理任一Web服务调用失败.

Ale*_*hik 7

是的,它被称为投影:

o1().SelectMany(_ => o2()).Subscribe();
Run Code Online (Sandbox Code Playgroud)


Ana*_*tts 6

虽然Alex是对的,但另一种方法是:

Observable.Concat(
    o1(4),
    o2(6))
  .Subscribe(x => /* Always one, then two */);
Run Code Online (Sandbox Code Playgroud)

这保证o2仅在o1之后运行 - 而不是Merge,它将同时运行它们:

Observable.Merge(
    o1(4),
    o2(6))
  .Subscribe(x => /* Either one or two */);
Run Code Online (Sandbox Code Playgroud)