Mat*_*ius 5 javascript generator ecmascript-harmony ecmascript-6
我通过ES6功能和发电机引起了我的注意.出现在脑海中的一件事是链接Promise对象,我不能用循环来做.我们能做什么其他机制,我们以前不能做到?
我明白这是一个广泛的问题,但我现在还想不出什么,只有承诺.
通过使用yield,可以在函数控制流中的任何位置暂停生成器,从而保存当前的执行状态(范围和堆栈).
没有发电机,这更复杂:
生成器通常用于遍历数据结构,创建一个简单的流式迭代器,按顺序生成所有元素.想想树遍历,或者图中的DFS/BFS用于简单示例.
function* traverseTree(node) {
if (node == null) return;
yield* traverseTree(node.left);
yield node.value;
yield* traverseTree(node.right);
}
// vs (not sure):
function traverseTree(node) {
var rl, l, r;
return {
next: function() {
if (node == null && !r) return {done:true};
if (!l) l = traverseTree(node.left);
if (!(rl=l.next()).done)
return rl;
if (node != null) {
var n = {value:node.value};
node = null;
r = traverseTree(node.right);
return n;
}
return r.next();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |