Генераторы и async/await — оба механизма для управления сложным потоком выполнения в JavaScript, но они служат разным основным целям.
function*yield для приостановки выполнения и возврата значений по одному.next()function* counter() {
yield 1;
yield 2;
yield 3;
}
const gen = counter();
gen.next(); // { value: 1, done: false }
async на функцииawait для приостановки выполнения до разрешения Promiseasync function fetchData() {
const data = await fetch('/api/data');
return data.json();
}
Ключевое понимание здесь в том, что async/await по сути — синтаксический сахар, построенный на генераторах и Promise. Под капотом JavaScript-движок использует похожий механизм приостановки и возобновления, но с автоматической обработкой разрешения Promise — избавляя от необходимости в ручной итерации.
Генераторы дают больше гибкости для итерации и формирования последовательностей значений. Async/await предоставляет более простой и понятный синтаксис для самого распространённого сценария асинхронности — последовательной работы с Promise.
Генераторы используют ключевое слово yield для паузы выполнения и возврата значений, а async-функции используют await для паузы до разрешения Promise, но обе требуют ручной итерации для продолжения выполнения.
Новый — ещё не проверен сообществом
Вы