nodejs ES6生成器仅输出{}

时间:2016-04-03 17:16:18

标签: node.js ecmascript-6 generator

以下代码仅输出{},无论我对生成器函数做什么:

//test 1
function *myFunc(input) {
  //yield input;
  return input;
}
console.log(myFunc('dafuq happening')); //prints {}


//test 2
function *myFunc2() {
  console.log('wtf?');
}
myFunc2(); //prints {}

在arch linux上使用nodeJS 5.10

2 个答案:

答案 0 :(得分:3)

调用该函数只返回an instance of Generator,它还没有运行该函数的内容。您必须在实例上调用next()才能开始提取值:

//test 1
function *myFunc(input) {
  //yield input;
  return input;
}
console.log(myFunc('dafuq happening').next());
// prints { value: 'dafuq happening', done: true }

//test 2
function *myFunc2() {
  console.log('wtf?');
}
myFunc2().next();
// prints wtf?

答案 1 :(得分:0)

为了控制生成器的流程,我更喜欢(推荐)使用lib co



var co = require('co');

co(myFunc())
.then(function(result){
    //Value, returned by generetor, on finish
})
.catch(function(error){
    //I recimmend always finish chain by catch. Or you can loose errors
    console.log(error);
})




请记住,你必须只产生函数,承诺,生成器,数组或对象。