javascript - 如何控制或过滤从 rxjs 可观察对象中发出的集合返回的对象数量?

标签 javascript angular rxjs observable

service.$post()我从返回类型的服务中观察到 <Observable<any[]>> , 发出这个集合

[{ name: 'nike' }, { name: 'nika' }, { name: 'niko' }, { name: 'niky' }]

this.posts = <Observable<any[]>>this.service.$post();

// result
// [{  name: 'nike' }, {  name: 'nika' }, {  name: 'niko' }, {  name: 'niky' }]

我的问题是如何控制或过滤从发出的集合中返回的对象数量,在下面的示例中我想从 <Observable<any[]>>this.service.$post() 中获取 2 个对象.请帮忙

this.posts = this.service.$post()
  .pipe(
    take(2)
  );

// should be
// [{  name: 'nike' }, {  name: 'nika' }]

最佳答案

你可以这样得到第一个元素:

this.posts = this.service.$post()
  .pipe(
    map(arr => arr[0])
  );

take(1) 运算符将仅返回您的可观察对象发出的第一个值。在这种情况下,它将是整个数组。由于 post 请求只发出一次,所以它不会真正有用。

如果你想保留 x 个项目,你可以这样做:

const x = 2;

this.posts = this.service.$post()
  .pipe(
    map(arr => arr.slice(0, x))
  );

关于javascript - 如何控制或过滤从 rxjs 可观察对象中发出的集合返回的对象数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49977198/

相关文章:

javascript - 垂直排序对象,对象之间留有边距空间

javascript - Angular 表单验证显示登录错误消息

javascript - 获取文本框的值

javascript - 修改 HTML 文件以将所有外部脚本和 CSS 嵌入到 &lt;script&gt; 和 &lt;style&gt; 标签中

javascript - Angular 2. 移除@HoSTListener()

javascript - 每个事件具有不同间隔的 Rx.Observable.interval

javascript - 做(点击)与订阅

angular - Angular-DialogRef-退订-是否需要从afterClosed退订?

javascript - javascript 我需要帮助来解决问题

单击按钮时angular2验证表单