Використання генераторів та ітераторів JavaScript для розширеного оброблення даних
У меню сьогодні є щось цікаве: JavaScript Генератори та Ітератори! Але не хвилюйтеся, вони не схожі на ті ж пугачі математичні симпозіуми, і ніхто тут не просить вас спростувати останню теорему Ферма! Візьміть каву, розслабтеся і давайте разом пройдемо цю подорож складнощами роботи з даними в JavaScript.Що таке JavaScript Генератори та Ітератори?
Давайте почнемо з початку. Уявіть, що ви на комедійному шоу. Комік (назвемо його Боб) робить жарт, чекає коли аудиторія посміється, і тоді переходить до наступного жарту. Генератори схожі на нашого доброго Боба! Вони дуже ввічливі, паузлять після виконання обчислення (жарту в випадку Боба) і продовжують, коли ви готові до наступного кульбаби.
З іншого боку, Ітератор схожий на вибагливого читача книг. Замість того, щоб читати весь том (Масив) одразу, наш Ітератор бере по одній сторінці (елементу) за раз, поки не закінчиться або не набридне (доки не закінчаться елементи). У технічному жаргоні, Ітератор – це об’єкт, який дозволяє пройтися через ітерабельний об’єкт (наприклад, масив або рядок), по одному елементу за раз.Навіщо нам це потрібно?
Ну, хоча було б дивовижно, якби реальне життя було прямим шляхом без проблем або сюрпризів, у цифровому світі програмування ми любимо виклики, чи не так?
Генератори та Ітератори дозволяють обробляти великі обсяги даних без втрат продуктивності вашої програми. Крім того, вони роблять ваш код більш зрозумілим та підтримуваним.
Уявіть, якщо Бобу довелося б розкрити всі свої жарти одразу, або якщо нашому читачеві довелося б прочитати весь том без перерв – це був би хаос, правда? Тому Генератори та Ітератори допомагають уникнути цього в вашому коді.Робота з Генераторами
Створення генератора таке ж просте, як приготування кави, ну, майже. Вам просто потрібно додати зірочку (*) після ключового слова ;function>, що сигналізує, що це не просто звичайна функція, це ‘паузована’ функція.
function* generatorExample() {
yield 'hello';
yield 'world';
}
Тут ;yield> схожий на Боба, який чекає, поки сміх підсихне. Кожного разу, коли зустрічається ;yield>, функція паузиться, як коли ви ставите на паузу свій улюблений серіал на Netflix між кліфгенгерами.Взаємодія з Генераторами
Взаємодія з генератором схожа на взаємодію з торговим автоматом. Ви кидаєте монету (викликаєте ‘next()’), і отримуєте соду (значення, яке ‘віддалено’).Ітератори на роботі
Уявіть ітератор як ваше прозоре вікно до інвентаря, скажімо, вашої книжкової полиці. Ви контролюєте по одній книзі, починаючи зліва, йдучи праворуч, не знаючи, яку книгу ви виберете до того, як виберете її. Ітератор – це об’єкт, створений шляхом виклику методу ;[Symbol.iterator]()> на ітерабельному об’єкті.
let myBooks = ['Гаррі Поттер', 'Володар перснів', 'Гра Престолів'];
let iterator = myBooks[Symbol.iterator]();
console.log(iterator.next().value); // 'Гаррі Поттер'
console.log(iterator.next().value); // 'Володар перснів'
У вищезазначеному прикладі, кожен виклик ;next()> дає наступну книгу з ‘полиці’. І ось! Це історія JavaScript Генераторів та Ітераторів, двох дуже важливих концепцій програмування. Наступного разу, коли ви стикнетеся з великим завданням управління даними, згадайте коміка Боба, вибагливого читача та їхніх аналогів у реальному житті. Приємного кодування!