Как работает асинхронная итерация в ES6+ с использованием for-await-of?

Этот вопрос проверяет понимание работы асинхронных итераторов и их использование для обработки асинхронных потоков данных в ES6+.

Короткий ответ

Асинхронная итерация с использованием for-await-of позволяет работать с асинхронными итераторами, такими как асинхронные генераторы или промисы, которые возвращают данные постепенно. Оператор for-await-of ждет разрешения каждого промиса перед переходом к следующей итерации. Это удобно для обработки потоков данных или последовательных асинхронных операций.

Длинный ответ

Асинхронная итерация была введена в ES2018 и позволяет перебирать коллекции данных, которые поступают асинхронно. Обычно используется с асинхронными генераторами, которые возвращают промисы. В цикле for-await-of каждый промис, возвращаемый итератором, разрешается перед тем, как код переходит к следующему значению.

 

Пример использования:

async function* asyncGenerator() {
  yield new Promise(resolve => setTimeout(() => resolve("Data 1"), 1000));  
  yield new Promise(resolve => setTimeout(() => resolve("Data 2"), 1000)); 
} 

(async () => {
  for await (let value of asyncGenerator()) {
      console.log(value); // Выведет "Data 1" и "Data 2" с задержкой  
  } 
})();

for-await-of блокирует каждую итерацию до тех пор, пока текущий промис не разрешится, что делает его полезным для работы с потоками данных или с последовательными асинхронными задачами. Это упрощает обработку данных, которые поступают по мере их готовности, например, данные от API или чтение файлов.

Уровень

  • Рейтинг:

    1

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Подпишись на React Developer в телеграм