我走到了ES6的特点和发电机引起了我的注意。有一件事突然浮现在脑海中,那就是把许诺的东西链锁起来,这是我不能用循环做的。我们还能做些什么,这是我们以前做不到的?
我明白这是一个宽泛的问题,但我现在除了承诺什么都想不出来。
发布于 2014-05-12 16:31:55
通过使用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();
}
}
}https://stackoverflow.com/questions/23613612
复制相似问题