Generator function dùng function* và yield, trả về iterator có thể pause và resume.
Mỗi lần gọi next() thực thi đến yield tiếp theo và trả về {value, done}.
javascript
function* counter() {
let n = 0;
while (true) {
yield n++;
}
}
const gen = counter();
gen.next(); // { value: 0, done: false }
gen.next(); // { value: 1, done: false }Dùng để tạo infinite sequences, lazy evaluation, hoặc kiểm soát luồng bất đồng bộ (trước khi có async/await).