当函数返回一个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) } 

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

当函数返回一个promise时,是否有任何好处?

这种差异是从外部观察不到的(除非你通过toString获得函数源,而不是由当前转译器支持),所以这里没有任何好处。

使函数async甚至可能会减慢它的一些,因为调用涉及更多的东西,创造一个新的承诺,并解决它。

async函数的一大优点,除了已经提到的增强的可维护性外,还包括error handling。 在函数体的评估中抛出的任何exception都将被转换为拒绝返回的promise,而不需要明确这一点。

注意你甚至不需要await这里使用await ,你可以直接从async function return 1

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

1:除非你在try块内return否则它会产生变化 。