首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rxjs5,distinct()不起作用

Rxjs5,distinct()不起作用
EN

Stack Overflow用户
提问于 2016-05-11 18:13:23
回答 1查看 1.5K关注 0票数 3

代码如下:

如果在distinct()运算符之前注入do(),则一切正常

很好,但是由于某些原因,distinct()只打印第一个对象

_

代码语言:javascript
复制
Rx.Observable
  .interval(1000)
  .flatMap(_ => { // JSONP request
    return Rx.Observable.create(observer => {
      window.eqfeed_callback = res => {
        observer.next(res);
        observer.complete();
      };

      loadJSONP(QUAKE_URL);
    }).retry(3);
  })
  .flatMap(res => Rx.Observable.from(res.features))
  .map(quake => {
    return {
      lat: quake.geometry.coordinates[1],
      lng: quake.geometry.coordinates[0],
      size: quake.properties.mag * 10000,
      code: quake.properties.code
    };
  })
  .do(logToConsole) // DEBUG: all objects are logged to the console
  .distinct(quake => quake.code) // it only log the first object !
  .subscribe(logToConsole);
EN

回答 1

Stack Overflow用户

发布于 2016-08-24 07:37:52

根据reactivex.io提供的函数描述,我的理解是.distinct()操作符实际上应该以您编写的方式工作(无论这是不是一个bug,我不确定)。

但是,由于您的代码不起作用(正如我已经测试过的),另一种选择是在调用.distinct()之前使用.pluck()提取值。在我的测试中,这将按预期工作(不向.distinct()调用提供任何参数)。

基于您的代码的示例:

代码语言:javascript
复制
.do(logToConsole) // DEBUG: all objects are logged to the console
.pluck("code")
.distinct() // now works as expected
.subscribe(logToConsole);`
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37159519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档