Day 49 Lazy Evaluation
Lazy evaluation mein values tab compute hoti hain jab actually need ho — pehle nahi. Memory save hoti hai aur performance improve hoti hai, specially large datasets ke saath.
Lazy Sequences with Generators
Infinite sequences lazily generate karo.
// Lazy sequence — sirf jab needed ho
function* lazyRange(start, end, step = 1) {
for (let i = start; i <= end; i += step) {
yield i; // ek ek karke, as needed
}
}
// Sirf pehle 5 numbers chahiye — baki compute hi nahi hue!
const first5 = [];
for (let n of lazyRange(1, 1000000)) {
first5.push(n);
if (first5.length === 5) break;
}
console.log(first5); // [1, 2, 3, 4, 5]
// Lazy map/filter
function* lazyMap(iterable, fn) {
for (let item of iterable) yield fn(item);
}
function* lazyFilter(iterable, pred) {
for (let item of iterable) {
if (pred(item)) yield item;
}
}
// Chaining
const evenSquares = lazyFilter(
lazyMap(lazyRange(1, 100), x => x * x),
x => x % 2 === 0
);
console.log([...evenSquares].slice(0, 5)); // first 5 even squares
🎯 Practice Challenge
Lazy image loader banao — sirf jab image viewport mein aaye to load karo (Intersection Observer + lazy evaluation).