我正在 Mozilla Dev 页面中查看生成器函数。
有一个示例代码具有send() 功能。
function* fibonacci() {
var a = yield 1;
yield a * 2;
}
var it = fibonacci();
console.log(it); // "Generator { }"
console.log(it.next()); // 1
console.log(it.send(10)); // 20
console.log(it.close()); // undefined
console.log(it.next()); // throws StopIteration (as the generator is now closed)
但是,chrome 和 Firefox(最新版本)都在 send() 函数上抛出错误。
对此有何看法?不支持吗?
最佳答案
.send
是 Legacy generator objects 的一部分特定于 SpiderMonkey 引擎。 It will be removed in some future release .他们已经开始在部分代码中使用 ES6 生成器删除/替换遗留生成器对象(Bug 1215846,Bug 1133277)
目前您仍然可以在 Firefox 中使用遗留生成器(此答案的当前版本:43.0.4)。只需在定义时省略 *
,只要函数体使用 yield
语句,就会使用遗留生成器。
function fibonacci() {
var a = yield 1;
yield a * 2;
}
var it = fibonacci();
console.log(it);
console.log(it.next());
console.log(it.send(10));
console.log(it.close());
console.log(it.next());
关于javascript - 关于生成器函数 send() javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921116/