recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - ES6 génère un problème

Pendant l'apprentissage de la génération ES6, pourquoi l'exemple suivant ne peut-il pas être imprimé et une erreur est-elle signalée ?
Comment modifier ?

Dois-je exécuter gen() ou gen.next()

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())
给我你的怀抱给我你的怀抱2808 Il y a quelques jours662

répondre à tous(2)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-06-12 09:24:08

    Ce que la fonction generate renvoie après l'appel est un objet generate
    Et generate.next renvoie également un objet, qui contient deux attributs : value et done
    Il devrait donc être appelé comme ceci

    let g = gen()
    console.log(g.next()) //{ value: ..., done: false }

    répondre
    0
  • typecho

    typecho2017-06-12 09:24:08

    //返回一个Iterator指针,还没开始执行
    const g = gen();
    //执行 readFile('../test/1.json');
    g.next();
    //执行 readFile('../test/2.json');
    //下面没有yield,所以会一直执行下去
    g.next();

    répondre
    0
  • Annulerrépondre