Асинхронная итерация в TypeScript: подробное руководство по «forEach async» и не только

Асинхронное программирование имеет решающее значение в современной веб-разработке, поскольку оно позволяет нам выполнять трудоемкие задачи, не блокируя основной поток выполнения. В TypeScript, популярном расширенном наборе JavaScript со статической типизацией, есть несколько методов, доступных для асинхронной итерации. В этой статье мы рассмотрим асинхронный метод forEach и другие связанные с ним методы, приведя попутно примеры кода.

  1. forEach async:
    Метод forEach async позволяет нам асинхронно перебирать массив, выполняя асинхронную операцию для каждого элемента. Вот пример:
async function processArray(array: number[]): Promise<void> {
  await array.forEach(async (item) => {
    // Perform asynchronous operation
    await someAsyncFunction(item);
    console.log(`Processed item: ${item}`);
  });
}
const myArray = [1, 2, 3, 4, 5];
processArray(myArray)
  .then(() => {
    console.log("Array processing complete");
  })
  .catch((error) => {
    console.error("Error occurred during array processing:", error);
  });
  1. цикл for…of с async/await:
    Другой подход — использовать комбинацию цикла for…of и синтаксиса async/await. Этот метод позволяет более детально контролировать процесс итерации. Вот пример:
async function processArray(array: number[]): Promise<void> {
  for (const item of array) {
    // Perform asynchronous operation
    await someAsyncFunction(item);
    console.log(`Processed item: ${item}`);
  }
}
const myArray = [1, 2, 3, 4, 5];
processArray(myArray)
  .then(() => {
    console.log("Array processing complete");
  })
  .catch((error) => {
    console.error("Error occurred during array processing:", error);
  });
  1. Promise.all с картой:
    Если вам нужно выполнить асинхронные операции над каждым элементом массива и собрать результаты, вы можете использовать комбинацию Promise.all и метода карты. Вот пример:
async function processArray(array: number[]): Promise<void> {
  const promises = array.map((item) => someAsyncFunction(item));
  const results = await Promise.all(promises);
  results.forEach((result, index) => {
    console.log(`Result for item ${array[index]}: ${result}`);
  });
}
const myArray = [1, 2, 3, 4, 5];
processArray(myArray)
  .then(() => {
    console.log("Array processing complete");
  })
  .catch((error) => {
    console.error("Error occurred during array processing:", error);
  });

Асинхронная итерация — это мощный метод TypeScript, позволяющий эффективно обрабатывать трудоемкие операции. В этой статье мы рассмотрели метод forEach async, а также другие методы, такие как цикл for…of с async/await и Promise.all с картой. Используя эти методы, вы сможете писать более эффективный и отзывчивый код в своих проектах TypeScript.