ลูปในเจเนอเรเตอร์ใน JavaScript
ภายในเจเนอเรเตอร์สามารถใช้
ลูปได้ ในขณะเดียวกันเรายังสามารถหยุดลูปชั่วคราว
ได้โดยใช้ yield มาดูตัวอย่างกัน
เราจะหยุดลูปชั่วคราวทุกครั้งในการวนซ้ำ:
function *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
รับอิเทอเรเตอร์:
let iter = func();
ทดสอบการทำงานของอิเทอเรเตอร์ของเรา:
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}
สร้างอิเทอเรเตอร์ ที่ทุกครั้งที่เรียกใช้
จะคืนค่าตัวเลขจาก 10
ลงไปจนถึงศูนย์
สร้างเจเนอเรเตอร์ ที่รับพารามิเตอร์ เป็นตัวเลข ให้ทุกครั้งที่เรียกใช้ อิเทอเรเตอร์ลดตัวเลขลงทีละหนึ่ง จนกว่าจะถึงศูนย์
สร้างเจเนอเรเตอร์ ที่รับพารามิเตอร์ เป็นตัวเลข ให้ทุกครั้งที่เรียกใช้ อิเทอเรเตอร์ลดตัวเลขลงครึ่งหนึ่ง และคืนค่าผลลัพธ์ และทำเช่นนี้ไปเรื่อยๆ จนกว่าตัวเลขจะน้อยกว่าหนึ่ง
สร้างอิเทอเรเตอร์ ที่ทุกครั้งที่เรียกใช้ จะคืนค่ากำลังสองถัดไป
สร้างอิเทอเรเตอร์ ที่ทุกครั้งที่เรียกใช้ จะคืนค่าตัวเลขฟีโบนัชชีถัดไป