【问题标题】:Rx.js, Subscribe is called with undefinedRx.js,订阅未定义调用
【发布时间】:2015-04-06 09:23:46
【问题描述】:

我正在使用 Rx.js 将 AJAX 调用的结果流式传输到多个单元。

但是当订阅 MapObserver 的观察者不止一个时,我遇到了问题。当第一个订阅者将始终获得正确的数据但其余的将变得未定义时。

this.observable        = new Rx.Subject();

observeMap = this.observable
  .map(createMarker.bind(this));

var s1 = observeMap.subscribe(console.log.bind(console, 1));

var s2 = observeMap.subscribe(console.log.bind(console, 2));

请指教,谢谢!

【问题讨论】:

  • 听起来像是一个可能的错误(share 不应该是防止此问题所必需的)。你能举个例子说明你打电话给this.observable.onNext吗?你使用的是哪个版本的 rxjs?同时显示createMarker()
  • 我在最新版本 (2.5.1) 和it works 中按预期进行了测试。您可能使用了一些较旧的错误版本的 rxjs。正如@brandon 所写:share 不应该是获得你想要的东西的必要条件。

标签: javascript node.js reactive-programming rxjs


【解决方案1】:

我刚刚为我的问题找到了一个解决方案,为了在少数订阅者之间共享一个 observable,您可以使用 share 方法。

this.observable        = new Rx.Subject();

observeMap = this.observable
  .map(createMarker.bind(this))
  .share();

var s1 = observeMap.subscribe(console.log.bind(console, 1));

var s2 = observeMap.subscribe(console.log.bind(console, 2));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2017-08-02
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多