我正在创建一个异步迭代的数组(为了好玩)。这工作正常:
class AsyncArray extends Array {
constructor() {
super();
this.x = 0;
}
[Symbol.iterator]() {
return {
next: () => {
let promise = new Promise(resolve => setTimeout(
() => resolve(this.x++), 1000)
);
return {done: this.x >= this.length, value: promise};
}
};
}
}
async () => {
for (let x of AsyncArray.of(1, 2, 3)) {
let value = await x;
console.log(value);
}
}();
但是,这会打印出来,0...1...2
因为我自己跟踪当前计数器并将其初始化为x
.
有什么方法可以获取数组内部的当前迭代器值?我还需要能够正确确定该done
值。