Имеется следующий фрагмент кода. Подскажите, пожалуйста, он обречен на неудачу или я чего-то не догоняю?
Меня смущает повторное использование точно того же итератора в двух (for ... of ...). Можно ли так делать? Итератор ведь одноразовый, разве нет?
Можно ли это заставить работать?
PS: если заменить это
for await (const person of { [Symbol.asyncIterator]() { return iterator; } }) {
на это
for await (const person of target) {
, то все успешно отрабатывает.
меня интересует может ли это работать именно в таком виде, в каком мне это досталось
const iterator = target[Symbol.asyncIterator]();
const iterated = [];
for await (const person of { [Symbol.asyncIterator]() { return iterator; } }) {
iterated.push(person);
}
t.same(iterated, [],
'iterates sucessfully over empty collection');
const toAdd = [1, 2, 3];
await target.addToTarget(toAdd);
for await (const person of { [Symbol.asyncIterator]() { return iterator; } }) {
iterated.push(person);
}
t.same(iterated, toAdd,
'iterates sucessfully after adding to collection (iterator does not invalidate)');