迭代器 v.s. 迭代对象

3

这种差异重要吗?它是:

  • iterator = 迭代一组数据结构的抽象
  • iteratee = 正在迭代的实际数据结构

我正在阅读 async 的文档,发现“iteratee”随处可见。好吧,它不执行实际迭代,因此 iterator 不是正确的名称。但根据我对上面“iteratee”的理解,它也不应该是一个函数(在我的脑海中,iteratee = 数据结构 - 如果有什么东西在进行迭代,那就是 iterator 函数)。

如果您不熟悉 async 的 iteratee:它是一个函数,它接受2个参数,即您正在迭代的集合中的下一个值和一个函数,该函数接受一个错误值和一个结果值。您应该在 iteratee 中执行某些异步操作,然后调用其第二个参数(function(err, result))以返回错误或结果。

(然后,您将向您正在进行的任何操作(map、filter 等)提供另一个回调作为参数,以处理调用 iteratee 在所有初始集合元素上的异步操作的结果)。

只是好奇:使用“iteratee”这个名称是否正确?

1个回答

5

迭代器调用一个迭代函数,这里是一个回调函数。在异步编程中,如果我们把迭代函数称为回调函数会让人感到困惑,因为大多数迭代函数都会传递一个回调函数来指示完成。

一些背景信息,请参考async.js的问题讨论,这也是lodash和underscore中指定迭代器回调的方式。这个underscore线程是这三个库变更的基础。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接