javascript - ES6的generate问题
给我你的怀抱
给我你的怀抱 2017-06-12 09:22:08
[JavaScript讨论组]

在学习ES6的generate,下面例子为什么不能打印,还会报错?
如何修改?

我是应该执行gen()还是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())
给我你的怀抱
给我你的怀抱

全部回复(2)
伊谢尔伦

generate function调用后返回的是一个generate对象
而且generate.next返回的也是一个对象,包含了value和done两个属性
所以应该这么调用

let g = gen()
console.log(g.next()) //{ value: ..., done: false }
typecho
//返回一个Iterator指针,还没开始执行
const g = gen();
//执行 readFile('../test/1.json');
g.next();
//执行 readFile('../test/2.json');
//下面没有yield,所以会一直执行下去
g.next();
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号