Javascript 如何从xml文件流式传输连续更新

Javascript 如何从xml文件流式传输连续更新,javascript,rxjs5,Javascript,Rxjs5,示例文件: <currencies><usd_gbp>0.80</usd_gbp><usd_eur>0.94<usd_eur></currencies> 0.800.94 我有一个包含货币兑换率的xml文件。文件会定期更新。我希望流在更新发生时实时发出更改。您将如何创建实时发送更新的rx.js可观察流 到目前为止,我一直在看这个例子,但它一次处理整个文件并结束 如何使steram在文件发生更新时发出更新?我是否需要将ap

示例文件:

<currencies><usd_gbp>0.80</usd_gbp><usd_eur>0.94<usd_eur></currencies>
0.800.94
我有一个包含货币兑换率的xml文件。文件会定期更新。我希望流在更新发生时实时发出更改。您将如何创建实时发送更新的rx.js可观察流

到目前为止,我一直在看这个例子,但它一次处理整个文件并结束


如何使steram在文件发生更新时发出更新?我是否需要将apiStream合并到一个时间间隔,或者是否有其他方法?

除非服务器可以将更新通知推送到订阅服务器,以提高转换率(例如通过websockets),否则您将无法使用常规HTTP请求定期轮询xml文件进行更改

Rx.Observable.interval(500)
  .flatMap(() => getConversionRates())
  .subscribe(conversionRate => console.log(`conversionRate: ${conversionRate}`));

function getConversionRates() {
  // implement logic to do one call to the xml file
  // and emit all conversion rates as observable emissions
  Return Rx.Observable.from([{ currency: 'usd_gbp', conversion: 0.80}]) 
}

如果您真的关心完全相同货币+转换的重复排放,那么您可以使用
.groupBy(x=>x.currency)
将您的所有排放与
.distinctUntilChanged()

结合使用,除非服务器可以向订阅者发送转换率更新通知(例如通过WebSocket)您必须使用常规HTTP请求定期轮询xml文件以进行更改

Rx.Observable.interval(500)
  .flatMap(() => getConversionRates())
  .subscribe(conversionRate => console.log(`conversionRate: ${conversionRate}`));

function getConversionRates() {
  // implement logic to do one call to the xml file
  // and emit all conversion rates as observable emissions
  Return Rx.Observable.from([{ currency: 'usd_gbp', conversion: 0.80}]) 
}

如果您真的关心完全相同货币+转换的重复排放,那么您可以使用
.groupBy(x=>x.currency)
将您的所有排放与
.distinctUntilChanged()

结合使用。您遇到了什么问题?在问题中添加了更多信息。您没有尝试
rxjs5
,尽管在第5行有注释,6表示“这将推送每个匹配的//xml节点、行和错误。”您在链接处尝试过这种方法吗?您可以使用
EventSource
连续传输文件,存储文件的最新版本,然后检查在最新事件中添加的节点,如果添加了新节点或节点发生了更改,则发送自定义函数。您遇到了什么问题?向问题添加了更多信息。您没有尝试
rxjs5
,尽管第5行和第6行的注释表明“这将推送每个匹配的//xml节点、行和错误。”您是否尝试过在链接处使用此方法?您可以使用
EventSource
连续传输文件,存储文件的最新版本,然后检查在最新事件中添加的节点,如果添加了新节点或节点发生了更改,则调度自定义函数。