以下代码仅输出{},无论我对生成器函数做什么:
//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
答案 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);
})

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