RX JS: оператор сканирования испускает один элемент - PullRequest
0 голосов
/ 01 марта 2020

Я играл с оператором сканирования RX JS, и я не могу обернуться вокруг него. Желаемый результат заключается не в том, что результат сканирования вернул накопленный, а в испущенном items из источника в случае, если bufferResults ложно. Следующий фрагмент кода генерирует единственное значение из items, а не весь массив.

 const refreshedItems$ = items$.pipe(
      withLatestFrom(this.bufferResults$.pipe(startWith(undefined))),
      scan<any>((acc, [src, buffer]) => {
        return !buffer ? src : acc.concat(src);
      }),
      map(([items, ]) => items),
      shareReplay(),
      tap((items) => console.warn('shareReplay', items)),
    );

Может кто-нибудь объяснить, как это работает точно, или вы можете указать мне хорошую статью о том, как это работает

1 Ответ

0 голосов
/ 01 марта 2020

Я думаю, что ваша ошибка в этой строке:

return !buffer ? src : acc.concat(src);

Я думаю, что вы хотели сделать:

return !buffer ? acc : acc.concat(src);

Если нет buffer, вы возвращаете аккумулятор acc напрямую или вы соединяете src и аккумулятор acc и возвращаете это.

...