在返回promise时使函数异步是否有任何好处?

时间:2016-06-02 18:37:38

标签: javascript node.js asynchronous promise async-await

当你有一个不等待任何东西的函数并返回一个promise时,你可以这样做。这将返回您可以await的承诺。

function doSomethingAamzing ({id, animalType, accessToken}) {
  const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
  return request.get(url)
}

没有必要,但我们可以这样做。

async function doSomethingAamzing ({id, animalType, accessToken}) {
  const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
  return await request.get(url)
}

后者作为开发人员更容易阅读,该函数是异步的并且将返回一个promise,这在第一个函数中不是很清楚。我认为使用后者可能是更好的做法的唯一原因是,代码经历了一些静态代码分析,可以从显式async语法中受益。

在返回promise时使函数异步有什么好处吗?

1 个答案:

答案 0 :(得分:2)

差异无法从外部观察到(除非你通过toString得到函数源,但目前的转发器还不支持),所以这里没有任何好处。

使函数async甚至可能会减慢它的速度,因为调用涉及更多的事情,创建一个新的承诺并解决它。

async函数的一大优势,除了您已经提到的可维护性增加之外,还有错误处理。在函数体评估中抛出的任何异常都将转换为对返回的promise的拒绝,而不需要明确这一点。

请注意,您甚至不需要在await使用returnasync function可以async function doSomethingAamzing ({id, animalType, accessToken}) { const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}` return request.get(url) } 直接 1 来自return s:

try

1:除非你Project > PropertiesPublish块内,does make a difference