Heim > Fragen und Antworten > Hauptteil
Warum kann das folgende Beispiel beim Erlernen der ES6-Generierung nicht gedruckt werden und es wird ein Fehler gemeldet?
Wie kann ich etwas ändern?
Soll ich gen() oder gen.next() ausführen
var fs = require('fs');
var readFile = function (fileName) {
return new Promise(function (resolve, reject) {
fs.readFile(fileName, function(error, data) {
if (error) reject(error);
resolve(data);
});
});
};
var gen = function* () {
var f1 = yield readFile('../test/1.json');
var f2 = yield readFile('../test/2.json');
console.log(JSON.stringify(f1));
console.log(JSON.stringify(f1));
};
//gen()
console.log(gen.next())
伊谢尔伦2017-06-12 09:24:08
generate function调用后返回的是一个generate对象
而且generate.next返回的也是一个对象,包含了value和done两个属性
所以应该这么调用
let g = gen()
console.log(g.next()) //{ value: ..., done: false }
typecho2017-06-12 09:24:08
//返回一个Iterator指针,还没开始执行
const g = gen();
//执行 readFile('../test/1.json');
g.next();
//执行 readFile('../test/2.json');
//下面没有yield,所以会一直执行下去
g.next();