Я создаю массив, который выполняется асинхронно (для удовольствия). Это прекрасно работает:Внутреннее * текущее значение * массива
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
.
ли Вы хотите решить с помощью 'x' или 'это [х]'? – Bergi
@Bergi с использованием 'this [x]' имеет смысл и решает проблему. –
Упс, похоже, я не понял ваш вопрос, я думал, что ваша проблема в том, что вам пришлось использовать пользовательский счетчик ... – Bergi