как использовать es6 arrow function с генераторами в node js

Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
24 декабря 2024

В стандарте ES6 стрелочные функции могут быть использованы вместе с генераторами в Node.js, но есть несколько особенностей, о которых стоит помнить.

  1. Стрелочные функции не имеют своего контекста this, они захватывают значение this из окружающего контекста. Это означает, что если вам нужно использовать this внутри генератора, вам следует использовать обычную функцию, а не стрелочную.

  2. Стрелочные функции не могут быть использованы как генераторы, поскольку у них нет встроенной поддержки ключевого слова yield.

function* generatorFunction() {
    yield 1;
    yield 2;
    yield 3;
}

const generator = generatorFunction();

for (const value of generator) {
    console.log(value);
}

Если мы всё же хотим использовать стрелочные функции, то можно обернуть генератор внутри обычной функции и затем вызвать эту функцию с использованием стрелочной:

const generatorFunction = function* () {
    yield 1;
    yield 2;
    yield 3;
};

const generator = generatorFunction();

const arrowFunction = () => {
    for (const value of generator) {
        console.log(value);
    }
};

arrowFunction();
0 0