javascript – 为什么first()rxjs运算符会继续返回数组

我有一个类型功能的服务

getSummary(id:string,universe:string):Observable< INTsummary []>

当我调用它时,我只想要INTsummary []中的第一项,所以我试图使用rxjs first运算符来执行此操作:

  loadQuickSummary(){
    var obj = this.myService.getSummary(this.user.id, this.user.universe).first();
    console.log("getting quick summary");
    obj.subscribe(r => {
      console.log(`first value ${JSON.stringify(r)}`)
    })
  }

从阅读文档和stackoverflow,这应该返回一个对象,但我得到一个INTsummary数组.

我怎样才能回到INTsummary []数组中的第一个对象?

解决方法:

一个()返回Observable的第一个发射.所以当你有源发出像INTsummary []这样的数组时,它会发出它发出的第一个数组(而不是数组中的第一个数组).

根据您的描述,您希望获得数组中的第一项,因此有两种方法

this.myService.getSummary(this.user.id, this.user.universe)
  .map(array => array[0])

…或者如果你真的想使用first()运算符:

this.myService.getSummary(this.user.id, this.user.universe)
  .concatAll() // flatten the array into separate emission
  .first()

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...