Почему require-atomic-updates найдены здесь? - PullRequest
0 голосов
/ 02 июля 2019

Текст справки для 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 может быть отрегулирован несколькими путями кода

Насколько я могу судить, строка, в которой сообщается об ошибке , является атомарным обновлением, она не считывает значение или не устанавливает новое значение на основе чего-либо еще.

Iне могу понять, почему Эслинт считает, что здесь возможно возможное состояние гонки?

Код долгое время функционировал, поэтому я рад просто отключить правило в этой строке, чтобы он не жаловался,Но я хотел бы понять причину, по которой Эслинт это выдвинул на первый план.

† Первоначальный код был написан давно, но совсем недавно был изменен на асинхронный

.

1 Ответ

0 голосов
/ 09 июля 2019

Если вы обновились до eslint 6.0.1, как я только что сделал, вы столкнулись с недавно появившейся ошибкой.

Существует несколько открытых проблем github, ссылающихся на эту ошибку, но суть в том, чтоatomic-updates в настоящее время не работает.

Я рекомендую понизить версию eslint или отключить правило в качестве обходного пути.

Отчеты об ошибках здесь:

https://github.com/eslint/eslint/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+require-atomic-updates

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...