我现在正在开发Angular应用,并且想要调用一个返回用户数组(假定)的服务
服务的响应就像
[{id: 1, name: 'foo'},
{id: 2, name: 'bar'}]
我想基于上一个对象计算每个项目,所以我出来使用REDUCE函数替换数组中的所有对象,而ITEM对象只是将所有数组返回给我而不是一个,所以我尝试返回最后一个检查结果的项目。
of(users).pipe(
reduce((arr, item)=>item, [])
).subscribe(r=>console.log(r))
// [{id: 1, name: 'foo'}, {id: 2, name: 'bar'}]
但是我尝试使用普通的reduce函数,它会返回
users.reduce((arr, item)=>item), [])
// {id: 2, name: 'bar'}
这是我关于stackblitz https://stackblitz.com/edit/rxjs-e97p4c?devtoolsheight=60
的示例答案 0 :(得分:1)
因为RxJS随时间返回值。另一方面,数组正在遍历数组值。因此,当您使用RxJS时,返回item
将导致返回整个数组对象。
如果您有加班的价值,那就会有所不同。下面的代码显示了代码在数组中的样子。
interval(1000).pipe(
take(2),
map(x=>users[x]),
reduce((arr,item)=>item)
).subscribe(x=>console.log('l',x))