При каждом вызове функции "l oop" я пытаюсь вернуть новое значение свойства "c" из объекта "test", но по какой-то причине я получаю одно и то же значение каждого вызов функции.
1 call: {value: {a: 1}, done: false}
2 call: {value: {a: 1}, executed: false}
3 call: {value: {a: 1}, done: false}
вместо получения нового значения для каждого вызова
1 call: {value: {a: 1}, done: false}
2 call: {value: {a: 2}, executed: false}
3 call: {value: {a: 3}, done: true}
const test = {
a: { id: 1 },
b: { id: 2 },
c: [{ a: 1 }, { a: 2 }, { c: 3 }]
};
function* generLoop(elem) {
// eslint-disable-next-line no-undef,no-restricted-syntax
for (el of test[elem]) {
// eslint-disable-next-line no-undef
yield el;
}
}
const createLoop = elem => {
const gen = generLoop(elem);
return () => gen.next();
};
function loop(elem) {
const findQuery = Object.keys(test).find(el => el === elem);
if (findQuery) {
const loopIterator = createLoop('c');
loopIterator();
}
return test[elem];
}
for (let i = 0; i < 3; i++) {
console.log(loop('c'));
}
Фактически, это симуляция логики c, которую я хочу реализовать. На самом деле, я имитирую ответ сервера, когда приходят имена запросов, я хочу дать определенный набор данных, но некоторые запросы будут приходить несколько раз и запрашивать ту же структуру данных, но с разными значениями, поэтому функция «l oop» будет вызываться независимо.