AsyncIterator в JavaScript - це інтерфейс, який дозволяє робити асинхронний перебір колекцій. Він поєднує два інтерфейси JavaScript - Iterator і AsyncIterable - щоб створити об'єкт, який можна використовувати для асинхронного перебору елементів колекції. Це дозволяє писати код, який може асинхронно обробляти дані по одному елементу за раз, не створюючи зайву оперативну пам'ять чи блокуючи дані запити. Для використання AsyncIterator, ви повинні використовувати конструкцію
for await...of, яка дозволяє асинхронно обробляти елементи колекції.Один з прикладів використання AsyncIterator в Node.js - це асинхронне оброблення багатьох файлів. Наприклад, якщо у вас є кілька CSV-файлів, які ви хочете пострічати і обробити їх дані по одному файлу за раз, ви можете використовувати AsyncIterator для цього. Наступний приклад показує, як це може виглядати:
const fs = require('fs');const path = require('path');async function processCSVFiles() { // Створюємо масив з шляхами до файлів CSV const csvFiles = [ path.join(__dirname, 'file1.csv'), path.join(__dirname, 'file2.csv'), path.join(__dirname, 'file3.csv') ]; // Створюємо AsyncIterator з масиву файлів const csvFilesIterator = csvFiles[Symbol.asyncIterator](); // Використовуємо конструкцію for await...of для асинхронного перебору файлів for await (const csvFile of csvFilesIterator) { // Читаємо файл CSV const csvData = await fs.promises.readFile(csvFile, 'utf-8'); // Обробляємо дані файлу CSV // ... }}processCSVFiles();У цьому прикладі, ми створюємо масив з шляхами до файлів CSV, з якого створюємо AsyncIterator, використовуючи метод
Symbol.asyncIterator. Потім ми використовуємо конструкцію for await...of для асинхронного перебору файлів CSV і читаємо їх дані за допомогою методу fs.promises.readFile. Цей код буде асинхронно обробляти кожен файл по одному, не блокуючи інші запити до сервера. Після обробки кожного файлу, цей код буде очікувати наступний запит до сервера, щоб продовжити обробку файлів.Цей текст був вступом до новини, що контент згенерований за допомогою ChatGPT заборонен на Stack Overflow. #news