Sieht so aus, als würde das Aufrufen von .bind (this) bei jeder Generatorfunktion meine Fähigkeit zu sehen, ob die Funktion ein Generator ist, unterbrechen. Irgendwelche Ideen, wie das zu beheben ist?Ist es unmöglich, zu erkennen, ob eine Funktion eine Generatorfunktion ist, wenn .bind() aufgerufen wurde?
var isGenerator = function(fn) {
if(!fn) {
return false;
}
var isGenerator = false;
// Faster method first
// Calling .bind(this) causes fn.constructor.name to be 'Function'
if(fn.constructor.name === 'GeneratorFunction') {
isGenerator = true;
}
// Slower method second
// Calling .bind(this) causes this test to fail
else if(/^function\s*\*/.test(fn.toString())) {
isGenerator = true;
}
return isGenerator;
}
var myGenerator = function*() {
}
var myBoundGenerator = myGenerator.bind(this);
isGenerator(myBoundGenerator); // false, should be true
bind() gibt eine neue Funktion. eine einfache Funktion, ohne Bindungen an die Vergangenheit – dandavis
Vielleicht wäre dies von Interesse, um zu sehen, wie sie es tun: https://www.npmjs.org/package/generator-bind – jfriend00
mögliche Duplikate von [überprüfen, ob die Funktion ein Generator ist ] (http://stackoverflow.com/questions/16754956/check-if-function-is-a-generator) –