Rx Publish()打破了XDocuments的IObservable

时间:2012-02-23 16:13:40

标签: system.reactive reactive-programming reactive-extensions-js

我有以下Rx查询产生IObservable问题,因为它不能与Publish()一起使用,因此订阅者数量增加,内存负载也增加

// Works
Observable
    .Interval(TimeSpan.FromSeconds(1.0))
    .Select(_ => XDocument.Load("http://test.com/data.xml"));

// Broken
Observable
    .Interval(TimeSpan.FromSeconds(1.0))
    .Select(_ => XDocument.Load("http://test.com/data.xml")).Publish();

有没有更好的方法来创建这样的Observable?

1 个答案:

答案 0 :(得分:2)

在你调用Connect()之前,IConnectableObservable与它的源断开连接,因此在有人订阅它之前不会发生任何事情(Interval不会启动它的计时器)。 Connect()将使Publish订阅其源。