JavaScript Generator.return() — достроково завершити генератор
Метод return() достроково завершує генератор, ніби всередині виконався return.
Загальний опис
Найцікавіше, що викликати його вручну доводиться рідко — бо він спрацьовує сам. Вийшов із for...of через break — і мова тихо покликала return() за тебе.
Це робить генератори надійними для роботи з ресурсами: блок finally усередині генератора виконається навіть при достроковому виході. Тобто файл закриється, з'єднання звільниться — навіть якщо цикл обірвали.
- Порада
-
Потрібне гарантоване прибирання в генераторі — пиши
автор: NagarDtry...finally. Він відпрацює й приbreak, і приreturn().
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| return | 39+ | 26+ | 10+ | 26+ | 13+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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 → закрили файл
Коментарі
Коментарів ще немає — будьте першим!