如何在sloth.js中使用javascript生成器?

时间:2013-02-25 17:25:24

标签: javascript

此问题需要了解位于此处的javascript 懒惰库:https://github.com/rfw/sloth.js

如果我有这个javascript生成器。

function fibonacci(){
  var fn1 = 1;
  var fn2 = 1;

  while (1){
    var current = fn2;
    fn2 = fn1;
    fn1 = fn1 + current;
    yield current;
  }
}

使用树懒库我可以把它变成一个适合与树懒库一起使用的迭代器。

var iter = sloth.iterNextable(fibonacci());

上面URL中的sloth文档显示了使用take()函数从懒惰友好迭代器中获取n个元素的示例:

sloth.ify([1, 2, 3]).take(2).force();
[ 1, 2 ]

问题:如何从我的fibonacci()生成器到一个我可以调用take()的slothified对象?

1 个答案:

答案 0 :(得分:2)

解决了它。我发布问题的原因是这个

sloth.ify(iter).take(5)

返回

[object Object]  

所以我以为我做错了什么。这个对象是一个需要评估的惰性对象。这是force()的用武之地:

sloth.ify(iter).take(5).force()

返回

1,1,2,3,5