help text for require-atomic-updates 仅讨论设置和使用相同变量的语句。
我有一些看起来像这样的旧†代码(我认为我已经包含了所有相关内容):
var someFunction = async function someFunction () {
switch(someVariable) {
case 0:
if (maybe) {
await doSomething();
}
break;
case 1:
//similar to above
}
someVariable = 0; // Error detected on this line
return
}
var someVariable = 0;
稍后在某些事件处理期间调用someFunction,而someVariable可以通过多个代码路径进行调整
据我所知,报告错误的行 是原子更新,它不会读取该值,也不会基于其他设置新值。
我不明白为什么埃斯林特认为这里有可能的比赛条件?
该代码已经运行了很长时间了,因此我很高兴在此行禁用该规则以停止抱怨。但我想了解eslint强调它的原因。
†原始代码是很久以前编写的,但是最近进行了调整以使其异步
答案 0 :(得分:0)
如果像我一样升级到eslint 6.0.1,您将遇到一个最近引入的错误。
有几个未解决的github问题引用了此错误,但要点是require-atomic-updates当前已被破坏。
我建议将eslint降级或禁用该规则作为解决方法。
错误在此处报告了该问题:
https://github.com/eslint/eslint/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+require-atomic-updates