Vòng lặp trong generator trong JavaScript
Bên trong generator, chúng ta có thể sử dụng
vòng lặp. Đồng thời, chúng ta có thể tạm dừng vòng lặp
bằng yield. Hãy
xem ví dụ. Chúng ta sẽ tạm dừng
vòng lặp sau mỗi lần lặp:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
Chúng ta nhận được một iterator:
let iter = func();
Hãy kiểm tra hoạt động của iterator của chúng ta:
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Tạo một iterator, mỗi lần gọi
sẽ trả về các số từ 10
đến 0.
Tạo một generator, nhận một số làm tham số. Mỗi lần gọi iterator sẽ giảm số đó đi một đơn vị, cho đến khi đạt đến 0.
Tạo một generator, nhận một số làm tham số. Mỗi lần gọi iterator sẽ giảm số đó đi một nửa và trả về kết quả. Và tiếp tục như vậy, cho đến khi số đó nhỏ hơn 1.
Tạo một iterator, mỗi lần gọi sẽ trả về lũy thừa tiếp theo của 2.
Tạo một iterator, mỗi lần gọi sẽ trả về số Fibonacci tiếp theo.