Преобразовать генератор в обычную функцию - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над проектом, и есть какой-то рефакторинг.Для внутреннего решения мы не хотим использовать генераторы, и я наткнулся на этот код (который мне кажется странным, потому что кажется, что генератор вообще не нужен).Как бы я пошел, чтобы преобразовать его в обычную функцию (я не думаю, что есть какая-либо асинхронная операция, насколько я могу судить)?

Просто чтобы прояснить, я не хочу использовать генераторы в этом коде.

Код:

const getResults = (totalData) => function* getNext() { 
    const combinations = totalData.reduce((a, b) => a * b.length, 1) 
    for (let i = 0; i < combinations; i++) { 
        yield createSolution(i, totalData) 
    } 
    return null 
}

Вот как это называется:

const result = getResults(obj.elementsInObj);

    for (let data of result()) {
        const resolve = validateData(data, obj.elementsInObj)
        if (resolve) {
            return resolve
        }
    }

1 Ответ

0 голосов
/ 25 февраля 2019

Ну, вы можете удалить звездочку и оператор yield и создать внутренний массив для хранения solutions, затем вы можете вернуть этот массив и выполнить цикл по нему.

const getResults = (totalData) => {
  const combinations = totalData.reduce((a, b) => a * b.length, 1),
        arr = [];
  for (let i = 0; i < combinations; i++) arr.push(createSolution(i, totalData));
  return arr;
}

const results = getResults(obj.elementsInObj);
for (let data of results) {
  const resolve = validateData(data, obj.elementsInObj)
  if (resolve) return resolve
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...