【发布时间】:2016-03-10 06:06:08
【问题描述】:
什么是检查函数是否是生成器的可靠方法,例如:
let fn = function* () {
yield 100;
}
if (fn instanceof ??) {
for (let value in fn()) {
...
}
}
我能想到的唯一方法是fn.toString().startsWith('function*'),但这非常不可靠且不可靠
上下文:nodejs 4+
【问题讨论】:
-
也许你可以检查一下上面是否定义了
next? -
刚试过,typeof fn.next 是“未定义”
-
你可能会做类似
if(typeof fn().next === 'function') {} -
那不是iterator函数,那是generator函数。
-
@saadq:但这会错误地识别任何使用
next方法返回对象的函数。
标签: javascript node.js ecmascript-6