我正在做一个项目,需要一些重构。对于内部决策,我们不想使用生成器,而我遇到了这段代码(在我看来,这很奇怪,因为似乎根本不需要生成器)。我将如何将其转换为普通函数(据我所知,我不认为有任何异步操作)?
请明确说明,我不想在此代码中使用生成器。
代码:
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
}
}
答案 0 :(得分:4)
好吧,您可以删除星号和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
}