JavaScript Generator.return() — достроково завершити генератор


Метод return() достроково завершує генератор, ніби всередині виконався return.

автор: NagarD

Загальний опис

Найцікавіше, що викликати його вручну доводиться рідко — бо він спрацьовує сам. Вийшов із for...of через break — і мова тихо покликала return() за тебе.

Це робить генератори надійними для роботи з ресурсами: блок finally усередині генератора виконається навіть при достроковому виході. Тобто файл закриється, з'єднання звільниться — навіть якщо цикл обірвали.

автор: NagarD

Порада

Потрібне гарантоване прибирання в генераторі — пиши try...finally. Він відпрацює й при break, і при return().

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
return 39+ 26+ 10+ 26+ 13+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
return 39+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

finally відпрацює навіть при break у циклі.

function* readLines() {
    console.log('відкрили файл');

    try {
        yield 'рядок 1';
        yield 'рядок 2';
        yield 'рядок 3';
    } finally {
        // виконається навіть при break!
        console.log('закрили файл');
    }
}

for (const line of readLines()) {
    console.log(line);

    if (line === 'рядок 2') {
        break; // тут мова сама покличе return()
    }
}
// відкрили файл → рядок 1 → рядок 2 → закрили файл
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід