Hình như gọi .bind (this) trên bất kỳ chức năng máy phát nào phá vỡ khả năng của tôi để xem chức năng có phải là máy phát hay không. có ý tưởng nào để sửa cái này không?Có thể không biết một hàm có phải là một hàm máy phát nếu .bind() đã được gọi trên nó không?
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() trả về một chức năng mới. một chức năng đơn giản, không có mối quan hệ với quá khứ – dandavis
Có lẽ điều này sẽ được quan tâm để xem cách họ làm điều đó: https://www.npmjs.org/package/generator-bind – jfriend00
có thể trùng lặp của [kiểm tra nếu chức năng là một máy phát điện ] (http://stackoverflow.com/questions/16754956/check-if-function-is-a-generator) –