Existe uma maneira elegante de processar um fluxo em pedaços?

Meu cenário exato é inserir dados no banco de dados em lotes, por isso quero acumular objetos DOM a cada 1000, liberá-los.

Eu o implementei colocando o código no acumulador para detectar a plenitude e a descarga, mas isso parece errado - o controle de descarga deve vir do chamador.

Eu poderia converter o fluxo em uma lista e usar subList de maneira iterativa, mas isso também parece desajeitado.

Existe uma maneira elegante de executar uma ação a cada n elementos e continuar com o fluxo enquanto processa o fluxo apenas uma vez?

questionAnswers(5)

yourAnswerToTheQuestion