Использование генератора о доходности - PullRequest
0 голосов
/ 13 января 2020

Мой код:

function wrapper(generatorFunction) {
  return function (...args) {
    let generatorObject = generatorFunction(...args);
    generatorObject.next();
    return generatorObject;
  };
}

const wrapped = wrapper(function* () {
  console.log(`First input: ${yield}`);
  return 'DONE';
});

wrapped();

У меня есть вопрос, почему веб-консоль не печатает First input. Хотя yield возвращает неопределенное значение.

1 Ответ

1 голос
/ 13 января 2020

В первый раз, когда вы сделаете следующее (), он будет выполняться до первой доходности.

function wrapper(generatorFunction) {
    return function (...args) {
        let generatorObject = generatorFunction(...args);
        generatorObject.next(); // Will Print till yield keyword => First Yield Call
        console.log('About to pass in a value to First Input');
        let done = generatorObject.next(42); // Will Print and Bring the next yielded value => First Input 22
        console.log(done);
        return generatorObject;
    };
}

wrapped = wrapper(function* () {
    console.log('First Yield Call');
    console.log(`First input: ${yield}`);
    return 'DONE';
});

wrapped();
...