我想从可观察对象中获取最后三个元素。假设我的时间轴如下所示:
--a---b-c---d---e---f-g-h-i------j->
其中:a、b、c、d、e、f、g、h、i、j
是发出的值。
每当有一个新值被发出时,我希望立即获得它,因此它可能会像这样:
[a]
[a, b]
[a, b, c]
[b, c, d]
[c, d, e]
[d, e, f]
[e, f, g]
[f, g, h]
... and so on
我认为这非常有用。想象一下构建一个聊天窗口,你想显示最后10条消息。每当有新消息时,你都希望更新你的视图。
我的尝试:演示
scan((acc, val) => [...acc, val].slice(-3), [])
- jjjjsacc
参数传递的内容。所以对于一个已经有3个元素的数组,它将.push(val)
使其大小变成4,然后再通过.slice(-3)
缩减到3个元素。这不是泄漏问题。 - Teodor Sandu