arrays - RxJS 限制和返回响应结果数组的最佳方式

标签 arrays http angular rxjs reactive-programming

我正在使用 Angular 2 的 http 服务获取一些数据,API 返回“n”个结果,但我只想处理“x”个数量。

考虑到我无权访问 API 的端点(为了创建 limit 或 findOne kind of methods),我正在尝试找出处理将返回到组件的结果数量的最佳方法调用我的 HomeService 的“loadLatest”方法。

对于这个特定的例子,响应是一个看起来像这样的对象:

{
 success: true,
 data: [Object, Object, Object],
 user: 'testUser'
}

我只对数据数组感兴趣(比如,只获取它包含的前两个对象)。

如果我想得到一个结果,我可以这样做:

import { Http, Headers } from '@angular/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

const URL = 'http://exampleapi.com/example';

@Injectable()
export class HomeService {
 constructor(private _http: Http){}

 loadLatest() {
  return this._http.get(URL)
  .map(res => res.json())
  .map(({data}) => data[0]);
 }
}

它有效(这并不一定意味着它实际上没问题)...但是,我知道必须有更好的方法来返回,例如,响应对象中数据数组中的前两个对象。或前三个或四个...或任何我想要的数量。

我读到过“take”方法,但我不相信它在这种情况下真的有效......

这是我订阅它并在我的组件中使用该服务的地方:

import { Component, OnInit } from '@angular/core';
import { HomeService } from './home.service';
import { Observable } from 'rxjs/Observable';

@Component({
 selector: 'home',
 templateUrl: './home.html'
})
export class HomeComponent implements OnInit {
 // I used this typing because I originally only wanted a single item
 // This might have to change
 items: Observable<Object>

 constructor(private homeService: HomeService){}

 ngOnInit() {
  this.homeService.loadLatest()
  .subscribe(result => this.items = result);
 }
}

如您所见,我希望结果是一个包含两个对象的数组,我将其分配给 this.items,以便我可以使用 angular 的 *ngFor 迭代这两个对象。

任何帮助将不胜感激! 提前致谢!

最佳答案

您可以在数据数组中使用 slice 方法。

loadLatest() {
  return this._http.get(URL)
  .map(res => res.json())
  .map(({data}) => data.slice(0,2));
}

关于arrays - RxJS 限制和返回响应结果数组的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40793792/

相关文章:

objective-c - 当一个整数相加或相乘超过其限制时会发生什么

arrays - 使用 HIVE 解析 json 数组

javascript - 多次调用 api 时,AJAX 请求有时会被取消

amazon-web-services - aws lambda发送定时http请求

angular - Angular 2 中的导入接口(interface)

asp.net - SignalR + Angular : how to add Bearer token to Http Headers

java - Java 中数组的不常见语法

javascript - JavaScript 中的空数组是否为真?

http - 在请求中包含 Via header 时,IIS6 不执行 gzip 压缩

Angular 单元测试模拟重播主题