提问人:John Taylor 提问时间:10/19/2023 最后编辑:John Taylor 更新时间:10/20/2023 访问量:61
如何修复 while 循环中的 ESLint 错误“no-loop-func”和“no-await-in-loop”
How to fix ESLint errors 'no-loop-func' and 'no-await-in-loop' in while loop
问:
此代码按父级从深度获取子 TreeNodes,直到获得第一级节点。如何使用“no-loop-func”和“no-await-in-loop”修复 ESLint 错误,而不会产生抑制和更改规则。没有找到任何 while 循环的例子。
const nodes = await loadNodeList();
let buffNodes = [];
let buff = {};
buff = await loadNodeById(id);
while (!nodes.find((elm) => elm.id === buff.id)) { // Function declared in a loop contains unsafe references to variable(s) 'buff'.(no-loop-func)
buff = await loadNodeById(buff.parent.id); // Unexpected `await` inside a loop.(no-await-in-loop)
buffNodes.push(buff);
}
答:
0赞
gorbatkov
10/19/2023
#1
看看这个 https://eslint.org/docs/latest/rules/no-await-in-loop
快速回答
/* eslint-disable no-await-in-loop */
for (let i = 0; i <= 10; i += 1) {
const res = await DoSomething();
}
/* eslint-enable no-await-in-loop */
另外,您可以尝试用于等待...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of
评论
0赞
Quentin
10/19/2023
这并不能“修复”它,它会关闭检查。
0赞
John Taylor
10/19/2023
是的,但我试图在没有压制的情况下找到方法
0赞
Elvis Adomnica
10/19/2023
@JohnTaylor编辑您的 eslint 规则配置并禁用它。
0赞
John Taylor
10/19/2023
@ElvisAdomnica且不禁用规则;)
2赞
VLAZ
10/20/2023
"另外,你可以尝试用于等待......”代码没有使用异步可迭代对象,所以我认为使用它没有意义。除非您建议将代码更改为异步生成器之类的东西,否则它可能会起作用,但似乎只是为了避免 linter 错误而进行相当大的更改。
评论
no-await-in-loop
no-await-in-loop