suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Wie verwende ich die Generatorfunktion yield in es6?

Schauen wir uns zuerst den Code an:

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().next('hello!')
// First input: hello!

Wie ist dieses Ausgabeergebnis zu verstehen? Nach langem Nachdenken konnte ich die Ergebnisse seiner Operation nicht verstehen.
Außerdem gibt es folgenden Code:

function* dataConsumer() {
  console.log('Started');
  console.log(`1. ${yield}`);
  console.log(`2. ${yield}`);
  return 'result';
}

let genObj = dataConsumer();
genObj.next();
// Started
genObj.next('a')
// 1. a
genObj.next('b')
// 2. b

Ich verstehe es immer noch nicht. Bitte helfen Sie mir, die beiden oben genannten Codeteile zu analysieren und die Generatorfunktion zu erlernen. Danke schön.

PHP中文网PHP中文网2707 Tage vor690

Antworte allen(1)Ich werde antworten

  • 怪我咯

    怪我咯2017-06-26 10:52:39

    yield 关键字有两个作用:

    1. 暂停生成器函数执行并返回后方表达式的值

    2. 恢复生成器函数执行并得到 next 方法传入的可选参数

    你给到的两个例子都是用 yield 接收了 next 方法传入的参数。

    Antwort
    0
  • StornierenAntwort