【问题标题】:Using `async` without really needing it [closed]在不需要它的情况下使用`async`[关闭]
【发布时间】:2019-05-17 21:13:37
【问题描述】:

即使在函数内部没有使用await,使用async 关键字声明函数是否有用?

例子:

async function() {
  return new Promise((resolve, reject) => {
    (...)
  });
}

我的一位同事使用这样声明 所有它的异步函数,唯一的原因是它可以快速知道函数何时是异步的。

但我并不真正相信。你怎么看?这是一个好习惯吗?

【问题讨论】:

  • 这是一个高度自以为是的话题。我认为您无法获得有用的主题答案。
  • 人们忘记了async 所做的一件事,它保证了回报将是一个承诺。在您的示例中,几乎可以保证。但是假设return new Promise是有条件的,也许你在另一个条件下返回false,在这里使用async可以保证false作为promise返回,否则它只是false .从使用await 的调用方端,它不会有任何影响,因为await 在无承诺上也很好。但如果有人使用then 回调,它就会失败。
  • 这不是固执己见,这样做是有原因的——它改变了堆栈框架。

标签: javascript promise async-await


【解决方案1】:

我会考虑这种不好的做法。 async 关键字的目的是允许使用await。根据MDN docs

异步函数是异步操作的函数 通过事件循环,使用 implicit Promise 返回其 结果。 但是使用异步的代码的语法和结构 函数更像是使用标准同步函数。

你同事代码的语法和结构显然不像“使用标准同步函数”。

每当我在这样的代码中发现一些意想不到/不习惯的东西时,我都必须花更多的时间来理解代码,这会降低工作效率。我可以删除 async 关键字吗?代码仍然有效吗?这需要一些努力才能弄清楚并 100% 确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2014-04-21
    • 2020-04-17
    • 2018-09-25
    相关资源
    最近更新 更多