Это похоже на ложный положительный результат. ESLint предполагает, что строка await Log.createUser(user);
манипулирует данными объекта user
, поэтому, если бы у нас была параллельно другая асинхронная функция, аналогичная приведенной выше, например:
let createUserWrapper2 = async function(user){
await Log.createUser2(user);
if (!user.registered) {
user.registered = true;
//userToSave has been declared outside of this function's scope
userToSave = true;
}
};
и затем выполните:
Promise.all([createUserWrapper(user), createUserWrapper2(user)]).then(() => {
...
});
Учитывая параллельное выполнение в Promise.all (), значение user.registered в каждой из двух функций может быть не значением из последнего значения, а старым из «собственной» асинхронной функции. Я все еще думаю, что это немного грязно, и я не могу точно указать, что он должен показывать, учитывая, что выполнение является линейным, и объекты передаются по ссылке, поэтому каждый тик выполнения будет иметь самые последние данные объекта.