JavaScript Generators & Iterators Kya Hote Hain?
Data sequences ko on-demand generate karna aur memory ko efficiently manage karna sikhein.
1. JavaScript Iterator Kya Hota Hai?
JavaScript me iterator ek aisa object hota hai jo kisi collection (jaise array, set, ya string) ke elements ko ek-ek karke access karne ka method provide karta hai. Iterator ka main purpose sequential access dena hota hai bina collection ke structure ko expose kiye.
Jab hum kisi iterator ka .next()
method call karte hain, to yeh ek object return karta hai jisme do properties hoti hain:
value
: Collection ka current element.done
: Ek boolean jo batata hai ki iteration complete hua ya nahi.
let numbers = [10, 20, 30];
let iterator = numbers[Symbol.iterator]();
console.log(iterator.next()); // { value: 10, done: false }
console.log(iterator.next()); // { value: 20, done: false }
console.log(iterator.next()); // { value: 30, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
2. JavaScript Generator Kya Hota Hai?
JavaScript Generators ek special type ka function hota hai jo execution ko pause aur resume karne ki ability deta hai. Yeh functions function*
keyword se declare kiye jaate hain aur yield
keyword ka use karke values ko ek-ek karke return karte hain.
Jab bhi generator function call hota hai, vo ek iterator object return karta hai. Har .next()
call par generator function yield
tak execute hota hai aur fir wahan ruk jaata hai, jab tak next call nahi hoti.
Example:
function* fruitGenerator() {
yield 'Apple';
yield 'Banana';
yield 'Grapes';
}
const fruits = fruitGenerator();
console.log(fruits.next()); // { value: 'Apple', done: false }
console.log(fruits.next()); // { value: 'Banana', done: false }
console.log(fruits.next()); // { value: 'Grapes', done: false }
console.log(fruits.next()); // { value: undefined, done: true }
Iterator vs. Generator
Feature | Iterator | Generator |
---|---|---|
Creation | Manually create karna padta hai | Easily ban jaata hai function* se |
Syntax | Normal object with next() | function* aur yield use hota hai |
Simplicity | Code lamba aur complex ho sakta hai | Code short aur readable hota hai |
Pause & Resume | Nahi kar sakte | Yes, yield se pause ho sakta hai |
Generators ke Use Cases
- Lazy Evaluation: Tab use karein jab aapko saari values ek saath nahi chahiye, jisse memory bachti hai.
- Infinite Sequences: Infinite numbers ya data streams generate karne ke liye.
- Asynchronous Code: Asynchronous operations ko handle karne ka ek advanced tareeka (jaise `async/await` internally generators use karta hai).
Ek generator function banayein jo 1 se 5 tak ke numbers yield kare. Fir, `for...of` loop ka use karke un numbers ko console me print karein.
Practice in JS EditorApni knowledge test karne ke liye is quick quiz ko dein.
Start Quiz