如何在javascript中使用嵌套函数作为生成器(使用“inner”yields)
How to use nested functions as generator in javascript (using "inner" yields)
<script>
function * d1 (p) {
p-=1;
yield p;
p-=2;
yield p;
}
var g=d1 (9);
var h;
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
</script>
给出 8,假; 然后是 6,假; 然后未定义,真;而
<script>
function * d2 (p) {
function * d1 (p) {
p -=1 ;
yield p;
p -=2 ;
yield p;
}
d1(p);
}
var g=d2 (9);
var h;
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
</script>
给了我三次未定义,真实;
由于我想要 d1 的隐藏结构(作为内部函数(,我怎样才能仍然获得与第一个样本相同的结果?
d2
生成器函数既不产生也不返回任何内容,因此您只会获得未定义。
您可能希望将其称为传递p
参数,并使用 yield*
生成每个迭代值。
function * d2 (p) {
yield* function * d1 (p) {
p -= 1;
yield p;
p -= 2;
yield p;
}(p);
}
对于复制和过去的需求:这就是 Oriol 为我工作的解决方案
<script>
function * d2 (p) {
function * d1 (p) {
p -=1 ;
yield p;
p -=2 ;
yield p; }
yield * d1(p); }
// ^^^^^^^^ are the changes
var g=d2 (9);
var h;
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
</script>
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使用动画实现纸张推车
- 如何在Angular2中使用jQuery插件
- 使用Express捕获参数
- 使用clickToggle并在单击另一个元素时关闭元素
- 如何在javascript中使用嵌套函数作为生成器(使用“inner”yields)
- 使用 inner.html.data 更新 jQueryUI 进度条
- jQuery get Inner
一张桌子的;使用.find()方法使用不同的类 - 如何收集整个
inner html with id="tripDate"在数组中,并使用当前日 - 如何在node.js中使用inner's result in outer function
- 如何收集整个