iterator chunking S3
- Stage: Stage 3
- Status: Active
- ECMAScript edition: —
- Synchronized: Aug 28, 2026
- 中文译文 · Source repository
This proposal adds chunks() and windows() methods to iterators for consuming streams in non-overlapping and overlapping subsequences of a given size. It includes comprehensive use cases, such as pagination, batch processing, and sliding window computations.
The README below comes from the upstream repository and may contain outdated stage or status metadata. Use the proposal details above as the current source of truth.
Iterator Chunking
A TC39 proposal to consume an iterator as either overlapping or non-overlapping subsequences of configurable size.
Stage: 3. Further advancement is dependent on 2 or more shipping implementations.
Specification: https://tc39.es/proposal-iterator-chunking/
presentations to committee
motivation
It can be useful to consume a stream by more than one value at a time. For example, certain algorithms require looking at adjacent elements.
chunking
This is commonly solved for non-overlapping subsequences with a "chunking" method that works like the following:
use cases for chunking
- pagination
- columnar/grid layouts, such as calendars
- batch/stream processing
- matrix operations
- formatting/encoding
- bucketing (using a computed chunk size, for iterators of known size)
sliding window
When overlapping sequences are needed, this is commonly called a "sliding window".
use cases for sliding windows
- running/continuous computations, such as averages
- context-sensitive algorithms, such as pairwise comparisons
- carousels and their analogues (when applied to an infinite cycle)