【发布时间】:2019-05-26 06:12:36
【问题描述】:
我有时开始用 JavaScript 编写一个函数,不知道我是否需要它异步。然后我需要使用 await 关键字:我希望 ESlint 自动更正并将 async 关键字添加到我的函数中。
例如:
function foo() {
const bar = await baz()
}
将转换为:
async function foo() {
const bar = await baz()
}
有没有自动修复的 ESlint 规则?
也许有人会说将不正确的代码自动更正为正确的代码是没有意义的。在这种情况下,该人是否有其他建议来提高编写该类型代码的便利性?
编辑:代码语法不正确。因此 ESlint 只会引发“解析错误”。因此,对于文本编辑器来说,这是一个更多的问题:是否有 VS Code 扩展为这种语法错误添加快速修复选项? “将周围的函数标记为异步”之类的?
EDIT 2:这在创建测试时特别有用。
it("is correct", () => {
expect(isCorrect()).toBe(true)
})
和
it("is correct", async () => {
expect(await isCorrect()).toBe(true)
})
都是有效的语法。在更改测试代码以添加 await 关键字时,函数自动将自身标记为异步而不是当前行为非常有用。
【问题讨论】:
-
这不是 linter 会做的,这是一个直接的语法错误。
-
“我有时开始用 JavaScript 编写一个函数,不知道我是否需要它异步” - 听起来你应该花更多时间来设计你的架构开始写代码。您应该始终了解函数会做什么,以及是否异步是合同的重要组成部分。不要简单地“添加一个
async关键字”,因为您认为它可能很方便。如果您开始编写同步方法,请尝试保持同步,直到您意识到您不能。当这种情况发生时,重新设计时要考虑到异步并重新开始。 -
好的,我知道这是一个语法错误。也许这更像是一个 VS Code 问题? VS Code 向我显示了我的代码中的语法错误:如果它提供“快速修复提示”以使我的函数异步,我会很高兴。我完全理解它对我的代码有影响,并且异步函数不等同于同步函数。但有时,在高层次上,我只需要一个函数来让我返回一些结果,无论是否异步。我喜欢 async / await 语法如何让我在不改变一切的情况下快速转向异步代码。
-
我猜这可能是对 JavaScript/TypeScript 语言服务器的功能请求
标签: javascript visual-studio-code async-await eslint