当函数返回一个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
否则它会产生变化 。