在这段生成的收集函数消费长生命周期订单源前,对它进行审查。
从可能很长的单次可迭代订单源中收集不超过有限正整数上限的已批准订单 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));
生成代码仅作示例,不代表任何特定模型