Как буферизуется наблюдаемая <any>, когда отсчет или максимальное время избегают генерации пустых массивов? - PullRequest
0 голосов
/ 28 октября 2018

Мне нужно показать последние 5 элементов из бэкэнда.Я должен буферизовать последние 10 элементов из наблюдаемого, но наблюдаемое может иметь только 0..4 элемента и никогда не создавать буфер, поэтому мне нужно максимальное время 2000 мс.Проблема, с которой я столкнулся: bufferTime(2000, null, 5), но при этом возникают пустые массивы.Как я могу избежать наблюдаемых выбросов пустых массивов?Буфер должен всегда содержать последние 10 элементов и создавать новый буфер только при добавлении нового элемента.

// [A,B,C]       - after 2s,      buffer -> [A,B,C]
// [A,B,C]       - after 2s,      buffer -> [] --> AVOID THIS
// [A,B,C]       - after 2s,      buffer -> [] --> AVOID THIS
// [A,B,C,D,E]   - after count 5, buffer -> [A,B,C,D,E]
// [A,B,C,D,E,F] - after count 5, buffer -> [B,C,D,E,F]

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-bufferTime

1 Ответ

0 голосов
/ 28 октября 2018

Вы можете filter пустых массивов после применения оператора bufferTime.Что-то вроде:

myObservable$.pipe(
  bufferTime(2000, null, 5),
  filter(items => items.length > 0)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...