为什么在这里找到require-atomic-updates?

时间:2019-07-02 08:39:20

标签: eslint

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强调它的原因。

†原始代码是很久以前编写的,但是最近进行了调整以使其异步

1 个答案:

答案 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

相关问题