Typescript 使用reduce Subject而不调用complete

Typescript 使用reduce Subject而不调用complete,typescript,rxjs,rxjs5,Typescript,Rxjs,Rxjs5,我是RxJS的新手。我使用的是RxJs 5.5.2 为了简单起见,每次调用next时,我都希望返回减少的值。下面是一个示例代码: const sub = new Subject<number>(); const obsesvable = sub.pipe( reduce((a, b) => { return a + b; }, 0) ); obsesvable.subscribe(x => console.log(x)); sub.next(2); s

我是RxJS的新手。我使用的是RxJs 5.5.2

为了简单起见,每次调用next时,我都希望返回减少的值。下面是一个示例代码:

const sub = new Subject<number>();
const obsesvable = sub.pipe(
  reduce((a, b) => {
    return a + b;
  }, 0)
);

obsesvable.subscribe(x => console.log(x));

sub.next(2);
sub.next(3);
// if I don't call this nothing happens
sub.complete();
现在,如果我不打电话给sub.complete,什么都不会发生

如果我调用sub.complete,我将无法再使用sub.next发送值

看看reduce方法的用法

它只会在流结束时发出,这就是为什么在调用complete之前没有任何内容

如果您希望随时间减少并获得值,则应使用:

因此,您的代码应该是:

const sub = new Subject<number>();
const obsesvable = sub.pipe(
  scan((a, b) => {
    return a + b;
  }, 0)
);

obsesvable.subscribe(x => console.log(x));

sub.next(2);
// output: 2
sub.next(3);
// output: 5