javascript - Wie verwende ich die Generatorfunktion yield in es6?
PHP中文网
PHP中文网 2017-06-26 10:50:39
0
1
702

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中文网

认证高级PHP讲师

Antworte allen(1)
刘奇

yield 关键字有两个作用:

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

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage