2016-04-03 12 views
-2

Die folgenden Codes nur dann ausgegeben, {}, egal, was ich meine Generator-Funktionen tun:NodeJS ES6 Generator gibt nur {}

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


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

NodeJS 5.10 auf Arch Linux

+0

Mögliches Duplikat [Was ES6 Generatoren sind und wie kann ich sie in node.js verwenden?] (Http://stackoverflow.com/q/18842105/1529630) oder [Was ist „-Funktion *“ in JavaScript?] (http://stackoverflow.com/q/9620586/1529630) – Oriol

Antwort

3

Aufruf der Funktion nur zurückkehren an instance of Generator mit , es führt den Inhalt der Funktion noch nicht aus. Sie haben next() auf der Instanz aufrufen, um die Werte zu starten ziehen:

//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? 
0

Für einen Strom von Generator zu steuern, ziehe ich (empfohlen) zu verwenden 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); 
 
})

und denken Sie daran, dass Sie nur die Funktion, verspricht, Generator, ein Array oder Objekt ergeben müssen.