Итак, ваша проблема в том, что stream
продолжает излучать даже после того, как messages
пуст.
Вы можете использовать takeWhile
для завершения потока:
const stream = interval(1000).pipe(
map((): Message => messages.pop()),
takeWhile(Boolean),
);
Когда messages
пусто, он возвращает undefined
, то есть false
, когда он превращен в логическое значение, поэтому takeWhile(Boolean)
завершит поток.
В зависимости от формата Вашей новой строки Вы могли бы использовать tibble::add_row
, если Ваша новая строка проста, и может определенный в "парах значения". Или Вы могли использовать dplyr::bind_rows
, "эффективное внедрение общего шаблона do.call (rbind, DFS)".