Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 63 из 114 · 9 мин
Асинхронные генераторы async function*, for await…of, протокол асинхронных итераторов, Symbol.asyncIterator и Array.fromAsync.
Заказы приходят по одному. Хочу обрабатывать их по мере поступления.
Асинхронный генератор отдаёт значения со временем, а for await ждёт каждое.
async function*await, и yield: отдаёт значения по мере готовности.async function* queue() {
for (const d of ["Блокнот", "Пенал"]) {
await wait(100);
yield d;
}
}
for await (const d of queue()) console.log("Готов", d);for await…offor await (const v of [Promise.resolve(1), 2]) console.log(v);next(), который возвращает промис { value, done }; получают его через [Symbol.asyncIterator]().const it = { i: 0, next() { return Promise.resolve(this.i < 2 ? { value: this.i++, done: false } : { done: true }); }, [Symbol.asyncIterator]() { return this; } };
for await (const v of it) console.log(v);next() · return() · throw()async function* g() { yield 1; yield 2; }
const it = g();
console.log(await it.next(), await it.return("стоп"));Array.fromAsync()async function* g() { yield "Блокнот"; await wait(50); yield "Пенал"; }
console.log(await Array.fromAsync(g()));Данные приходят частями со временем — это асинхронный итератор, перебирай его for await.
Напиши асинхронный генератор queue(orders): для каждого товара ждёт wait(30) и отдаёт ` ${d} обработан . Собери результат в done через Array.fromAsync внутри async function run()` и вызови её.
Array.fromAsync — пока нетВыберите один ответ.
Что делает for await (const x of source)?
Выберите один ответ.
Что возвращает next() асинхронного итератора?
Проверяем состояние обучения…