function createAsyncIterator(tasks) {
let index = 0;
return {
async next() {
if (index >= tasks.length) {
return { done: true, value: undefined };
}
const result = await tasks[index];
index++;
return { done: index >= tasks.length, value: result };
}
};
}
// 示例使用
const apiTasks = [
new Promise(resolve => setTimeout(() => resolve('Data from API 1'), 1000)),
new Promise(resolve => setTimeout(() => resolve('Data from API 2'), 1500)),
new Promise(resolve => setTimeout(() => resolve('Data from API 3'), 2000))
];
const asyncIterator = createAsyncIterator(apiTasks);
async function consumeIterator() {
let { done, value } = await asyncIterator.next();
while (!done) {
console.log(value);
({ done, value } = await asyncIterator.next());
}
}
consumeIterator();