Метод return у генератора
Вопрос
Генератор function* g() { yield 1; yield 2; } создан, но ещё ни разу не запускался. Что вернёт it.return(5) и что потом вернёт it.next()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
{ value: 1, done: false }, затем{ value: 2, done: false }{ value: 5, done: false }, затем{ value: 1, done: false }{ value: 5, done: true }, затем{ value: undefined, done: true }правильный ответ- TypeError: генератор ещё не запущен, сначала нужен
next()
Разбор
return(value) завершает генератор и возвращает { value, done: true }. Если генератор был внутри try с finally, этот finally выполнится. После завершения любой next() возвращает { value: undefined, done: true }. Ошибки нет: завершить можно и не запущенный генератор. Именно return() вызывает for...of при break.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Почему второй цикл по генератору пуст
Следующий вопрос
return-значение генератора и повторный spread