【发布时间】:2018-09-11 11:56:19
【问题描述】:
我正在从后端服务获取数据,一次 20 个结果。我想隐藏这个实现细节并创建一个生成器,只要我需要它们就会一直返回记录(当它们可用时)。
天真的实现:
function* getEndlessRecords(fetchingFunction) {
const batchSize = 20;
// endless loop:
for (let offset = 0; true; offset += batchSize) {
fetchingFunction(offset, batchSize)
.then(records => {
for (let i=0; i < records.length; i++) {
yield records[i]; // THIS DOESN'T WORK!!!
}
})
}
}
(可能有错别字 - 这是简化的代码)
我明白为什么这不起作用(yield 适用于最里面的函数),但是我似乎找不到围绕异步函数创建生成器的好方法。
生成器是否可以使用异步函数的输出?
【问题讨论】:
-
否(除非调用者通过
next传递它们)。但是你可以使用async generators
标签: javascript generator es6-promise