仅在X秒后取最后一项

时间:2016-10-28 20:19:30

标签: reactive-programming rxjs

我试图从流中跳过项目直到n秒,然后获取流中传递的最后一项。这就是我到目前为止所做的:

const delayedState$ = state$.delay(1000);
state$.buffer(
  delayedState$
).filter(
  (buffer) => buffer && buffer.length > 0
).publishReplay(1).refCount().map(
  (buffer) => buffer.slice(-1).pop()
).subscribe((state) => {
  saveState({
    buttonCount: state.buttonCount
  });
})

但是这看起来很混乱,并且当流在非常短的连续中有很多变化时似乎不起作用。我基本上试图遵循这个: https://github.com/tayiorbeii/egghead.io_idiomatic_redux_course_notes/blob/master/03-Persisting_the_State_to_the_Local_Storage.md

我的约束;它 是n秒后的最后一项,不是第一项,然后等待n秒。

1 个答案:

答案 0 :(得分:1)

在这个演示中,source Observable发出10个值,它们之间有1秒的延迟。

忽略所有值,直到内部Observable延迟5s发出一个值,然后只将最后一个值传递给订阅者(最后一个值为9,因为interval()计算{{1}的值}}):

0

查看现场演示:http://plnkr.co/edit/zklJWnnKzHu3smNmr0T2?p=preview