审查生成的获批 ID 收集器

来自 迭代器与生成器
Node 24 高级 6分钟 找出 4处问题

在这段生成的收集函数消费长生命周期订单源前,对它进行审查。

从可能很长的单次可迭代订单源中收集不超过有限正整数上限的已批准订单 ID,不多读取一项,并在达到上限而提前结束时关闭数据源。

JavaScript
function collectApproved(source, limit) {
  const iterator = source[Symbol.iterator]();
  const approved = [];

  while (approved.length < limit) {
    const { value } = iterator.next();
    if (value === undefined) break;
    if (value.status === 'approved') approved.push(value.id);
  }

  return approved;
}

function* readOrders(rows) {
  try {
    for (const row of rows) yield row;
  } finally {
    console.log('closed');
  }
}

const rows = [{ id: 'A', status: 'approved' }];
console.log(collectApproved(readOrders(rows), 1));

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误