【发布时间】:2021-06-26 04:02:28
【问题描述】:
下面的代码在使用ESLint 进行检查时会导致竞争条件:
let match = false
try {
match = await something()
} catch (err) {
// do something
}
if (match === false) {
// do something
}
编写这段代码的更好方法是什么?
编辑:
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'
}
来自 ESLint 的错误:
可能的竞争条件:
ctx.body可能会根据ctx.bodyrequire-atomic-updates 的过时值
【问题讨论】:
-
能否添加真实代码?
-
@JonasWilms 请在上面查看我的编辑。谢谢
-
这看起来很像误报。我看不出the rule conditions 如何应用于您的代码。如果这是您的实际代码,我建议您提交错误报告。
-
@Bergi 感谢您查看
标签: javascript async-await eslint race-condition