【问题标题】:Iterator v.s. iteratee迭代器与迭代者
【发布时间】:2016-10-22 02:53:01
【问题描述】:

这种差异显着吗?是吗:

  • iterator = 对一组数据结构进行迭代的某种抽象
  • iteratee = 被迭代的实际数据结构

我正在阅读async 的文档,发现到处都在使用“iteratee”。好吧,它不执行实际的迭代,所以 iterator 不是它的正确名称。但是根据我对上面“iteratee”的理解,它也不应该是一个函数(iteratee = 我认为的数据结构 - 如果有的话,迭代器就是进行迭代的函数)。

如果您不熟悉async 的迭代器:它是一个接受 2 个参数的函数,您正在迭代的集合中的下一个值,以及一个接受错误值和结果值的函数。您应该在迭代对象中执行一些异步操作,然后使用错误或结果调用它的第二个参数(函数(错误,结果))。

(然后,您将另一个回调作为参数(除了 iteratee)提供给您正在执行的任何操作(映射、过滤器等),以处理在 iteratee 中对所有初始集合的元素调用异步操作的结果)。

只是好奇:“iteratee”是正确的名称吗?

【问题讨论】:

    标签: computer-science async.js


    【解决方案1】:

    迭代器调用迭代对象,在本例中为回调。在异步中,如果我们将迭代器命名为回调,因为大多数迭代器传递回调以指示完成,这将是令人困惑的。

    这里是async.js issue where this was discussed 的一些背景知识,这也是我们在lodash 和下划线中指定迭代器回调的方式。这个underscore thread是三个库变化的基础。

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 2018-05-24
      • 2020-11-09
      • 1970-01-01
      • 2012-03-23
      • 2013-02-07
      • 2014-04-11
      • 2018-04-26
      相关资源
      最近更新 更多