【问题标题】:RxJS - Same without Subscription / BehaviorSubject?RxJS - 没有订阅/行为主题也一样?
【发布时间】:2020-05-03 10:43:32
【问题描述】:

我正在寻找另一种方法:

import { interval, BehaviorSubject } from 'rxjs';

const source$ = interval(1000);
const store$ = new BehaviorSubject<number[]>([]);
source$.subscribe((point) => store$.next([...store$.value].concat(point)));

// result
store$.subscribe(console.log);

我确实不想使用订阅,所以我猜没有 BehaviorSubject。

感谢任何提示。

【问题讨论】:

  • 所以你想要一个回调,即每秒调用一次?
  • 我更多的是寻找一个将广播其最后一个数组的流以及一个由另一个流触发的新数组(无论如何和平)。

标签: rxjs


【解决方案1】:

您可以使用扫描运算符。

const source$ = interval(1000);
const store$ = source$.pipe( // or simply interval(1000).pipe(
    scan((result, value) => [...result, value], []),
);

// result
store$.subscribe(console.log); // [0], [0, 1], ...

【讨论】:

  • 好的,我明白了,这是一种reduce函数,谢谢!
  • 是的,如果您有多个流并希望将它们聚合到一个数组中,您可以使用merge(stream1$, stream2$).pipe(... 和相同的scan 运算符。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多