Le code ci-dessous provoque une condition de concurrence critique lorsqu'il est vérifié avec ESLint :
let match = false
try {
match = await something()
} catch (err) {
// do something
}
if (match === false) {
// do something
}
Quelle est la meilleure façon d'écrire ce bloc de code?
MODIFIER:
let request = ctx.request.body || {}
let password = request.password
let match = false
try {
match = await bcrypt.compare(password, 'xxxxx')
} catch (err) {
ctx.throw(401, err)
}
if (match === false) {
ctx.throw(401, 'invalid password')
}
ctx.body = {
message: 'logged in ok'
}
Erreur d'ESLint:
Condition de course possible:
ctx.body
peut être réaffecté sur la base d'une valeur obsolète dectx.body
require-atomic-updates
Je me rends compte qu'il est un peu tard pour cette réponse, mais uniquement pour les futurs utilisateurs rencontrant cette question, pour désactiver cette règle, dans votre .eslintrc.json
ou la configuration appropriée que vous utilisez, spécifiez simplement:
"require-atomic-updates": "off"