正确使用ES6生成器和分页

vincentjames501

我已经对此进行了思考,但似乎无法针对如何实现这一目标提出合理的解决方案。问题陈述很简单-写一个生成器,将延迟分页远程数据集。为简化起见,理想情况下,这是我希望图书馆用户看到的内容:

for (var user of users()) { 
  console.log(user); 
}

我似乎不太能使发电机正常工作。我当时以为这样的逻辑会起作用,但是我不知道如何实现它。

function* users() {
  while (canPaginate) {
    yield* getNextPageOfUsers() // This will need to return an array of users from an http request
  }
}

我敢肯定,我在这里想的是错误的地方,但我似乎找不到任何使用此类生成器的人的例子(大多数人使用静态数据或诸如此类的事情async(function*(){...}),而这些人却并非如此)我正在寻找)。这里的重要部分是我希望最终用户能够如上所述使用数据。

-文斯

TJ人群

生成器实际上是暂停并回退给调用者的函数。但是,当调用它们时,它们必须同步返回一个值或完成一个值。因此,由于普通函数无法返回异步操作的结果,因此它们无法返回异步操作的结果。

正如本杰明指出的那样,有一个针对异步生成器的ES7提议,可以让他们做到这一点,但这就是ES7,因此这在将来很明显。消耗语法也受到影响(可以理解;对于编写调用的人员来说,知道什么时候异步是很重要的,当正常函数不同步时,我们不能让它们看起来是同步的)。

根据当前建议,使用异步生成器的代码如下所示:

for (var user on users()) { 
  console.log(user); 
}

(请注意,on而不是inof。)但这可能会改变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章